From aea60b6b6704a70350af8a220f4a5cf7e96eed7c Mon Sep 17 00:00:00 2001
From: Jan David Mol <mol@astron.nl>
Date: Wed, 10 Apr 2019 08:40:32 +0000
Subject: [PATCH] SW-642: Log the command line of *ctl on the stations, to log
 and track their use by ILT local mode

---
 MAC/APL/PAC/ITRFBeamServer/src/beamctl.cc    |  8 ++++++++
 MAC/APL/PIC/RSP_Driver/src/rspctl_main.cc    | 10 ++++++++++
 MAC/APL/PIC/TBB_Driver/src/tbbctl.cc         |  8 ++++++++
 MAC/APL/StationCU/src/ClockControl/clkctl.cc | 10 ++++++++++
 4 files changed, 36 insertions(+)

diff --git a/MAC/APL/PAC/ITRFBeamServer/src/beamctl.cc b/MAC/APL/PAC/ITRFBeamServer/src/beamctl.cc
index e75394fa83a..a7bf63d47cd 100644
--- a/MAC/APL/PAC/ITRFBeamServer/src/beamctl.cc
+++ b/MAC/APL/PAC/ITRFBeamServer/src/beamctl.cc
@@ -44,6 +44,8 @@
 #include <getopt.h>
 #include <sys/types.h>
 #include <unistd.h>
+#include <vector>
+#include <string>
 
 #include "beamctl.h"
 
@@ -892,6 +894,12 @@ int main(int argc, char** argv)
 {
     GCFScheduler::instance()->init(argc, argv, "beamctl");
 
+    // Log command line to track usage
+    vector<string> args;
+    for (int i = 0; i < argc; i++)
+      args.push_back(argv[i]);
+    LOG_INFO_STR("Command line: " << args);
+
     ASSERTSTR(BEAMLET_RING_OFFSET > maxBeamlets(MIN_BITS_PER_SAMPLE),
                 formatString("(%d>%d) beamctl is not suitable for handling %d bit mode. Revise program.",
                 BEAMLET_RING_OFFSET, maxBeamlets(MIN_BITS_PER_SAMPLE), MIN_BITS_PER_SAMPLE));
diff --git a/MAC/APL/PIC/RSP_Driver/src/rspctl_main.cc b/MAC/APL/PIC/RSP_Driver/src/rspctl_main.cc
index 41e65563d51..905c9b87ca9 100644
--- a/MAC/APL/PIC/RSP_Driver/src/rspctl_main.cc
+++ b/MAC/APL/PIC/RSP_Driver/src/rspctl_main.cc
@@ -7,14 +7,24 @@
 
 #include "rspctl.h"
 
+#include <vector>
+#include <string>
+
 using namespace LOFAR;
 using namespace LOFAR::rspctl;
 using namespace LOFAR::GCF::TM;
+using namespace std;
 
 int main(int argc, char** argv)
 {
 	GCFScheduler::instance()->init(argc, argv, "rspctl");
 
+  // Log command line to track usage
+  vector<string> args;
+  for (int i = 0; i < argc; i++)
+    args.push_back(argv[i]);
+  LOG_INFO_STR("Command line: " << args);
+
 	LOG_INFO(formatString("Program %s has started", argv[0]));
 
 	RSPCtl c("RSPCtl", argc, argv);
diff --git a/MAC/APL/PIC/TBB_Driver/src/tbbctl.cc b/MAC/APL/PIC/TBB_Driver/src/tbbctl.cc
index 687634f5cd6..bf23f9a3855 100644
--- a/MAC/APL/PIC/TBB_Driver/src/tbbctl.cc
+++ b/MAC/APL/PIC/TBB_Driver/src/tbbctl.cc
@@ -48,6 +48,8 @@
 #include <net/ethernet.h>
 #include <cstdio>
 #include <signal.h>
+#include <vector>
+#include <string>
 
 #include "tbbctl.h"
 
@@ -4369,6 +4371,12 @@ int main(int argc, char** argv)
 {
     GCFScheduler::instance()->init(argc, argv, "tbbctl");
 
+    // Log command line to track usage
+    vector<string> args;
+    for (int i = 0; i < argc; i++)
+      args.push_back(argv[i]);
+    LOG_INFO_STR("Command line: " << args);
+
     LOG_DEBUG(formatString("Program %s has started", argv[0]));
 
     TBBCtl tbbctl("tbbctl", argc, argv);
diff --git a/MAC/APL/StationCU/src/ClockControl/clkctl.cc b/MAC/APL/StationCU/src/ClockControl/clkctl.cc
index 78dc253db80..b4fd0af89f2 100644
--- a/MAC/APL/StationCU/src/ClockControl/clkctl.cc
+++ b/MAC/APL/StationCU/src/ClockControl/clkctl.cc
@@ -30,6 +30,9 @@
 
 #include "clkctl.h"
 
+#include <string>
+#include <vector>
+
 namespace LOFAR {
 	using namespace Clock_Protocol;
 	using namespace LOFAR::GCF::TM;
@@ -200,6 +203,7 @@ void ClkCtl::doHelp()
 
 using namespace LOFAR;
 using namespace LOFAR::GCF::TM;
+using namespace std;
 
 // Use a terminate handler that can produce a backtrace.
 Exception::TerminateHandler t(Exception::terminate);
@@ -213,6 +217,12 @@ int main(int argc, char* argv[])
 	// args: cntlrname, parentHost, parentService
 	GCFScheduler::instance()->init(argc, argv, "clkctl");
 
+  // Log command line to track usage
+  vector<string> args;
+  for (int i = 0; i < argc; i++)
+    args.push_back(argv[i]);
+  LOG_INFO_STR("Command line: " << args);
+
 	ClkCtl		cc(argv[1]);
 	cc.start(); 	// make initial transition
 
-- 
GitLab