]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
Allow to execute arbitrary shell commands via daq_agent -- mm
authorhadaq <hadaq>
Mon, 28 Oct 2002 07:41:17 +0000 (07:41 +0000)
committerhadaq <hadaq>
Mon, 28 Oct 2002 07:41:17 +0000 (07:41 +0000)
hadaq/Makefile.am
hadaq/Makefile.in
hadaq/agent.c
hadaq/agent.x
hadaq/sniff.c
hadaq/tcldaq.c

index c6db001be6fbaf8848a7310f6d622992d58a8f6b..ad75418e2bd9af59940c46ea43fedce395e90617 100644 (file)
@@ -2,19 +2,19 @@ AUTOMAKE_OPTIONS = foreign
 SUFFIXES = .x _clnt.c _svc.c _xdr.c .h
 
 .x_clnt.c:
-       rpcgen -l $< > $@
+       (echo "#define _BSD_SOURCE"; rpcgen -l $<) > $@
 
 .x_svc.c:
-       rpcgen -s tcp $< > $@
+       (echo "#define _BSD_SOURCE"; rpcgen -s tcp $<) > $@
 
 .x_xdr.c:
-       rpcgen -c $< > $@
+       (echo "#define _BSD_SOURCE"; rpcgen -c $<) > $@
 
 .x.h:
        rpcgen -h $< > $@
 
 online_svc.c: online.x
-       rpcgen -m online.x >online_svc.c
+       (echo "#define _BSD_SOURCE"; rpcgen -m online.x) >online_svc.c
 
 BUILT_SOURCES = agent.h online.h
 
index 0fece089a06ada5aa06a6bc832e24c8cdc74431d..1006e703995d12e3d1f6b17462503b604d8bb568 100644 (file)
@@ -1,6 +1,6 @@
-# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
 
-# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
+# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -77,50 +77,24 @@ BUILT_SOURCES = agent.h online.h
 bin_PROGRAMS = @daq_xmanage_prog@ @daq_manage_prog@ daq_agent daq_readout daq_memnet daq_netmem daq_evtbuild daq_sniff daq_anal daq_ctrlctu
 EXTRA_PROGRAMS = daq_xmanage daq_manage
 
-daq_xmanage_SOURCES = tcldaq.c tkAppInit.c \
-       agent_clnt.c agent_xdr.c worker.c psxshm.c
+daq_xmanage_SOURCES = tcldaq.c tkAppInit.c     agent_clnt.c agent_xdr.c worker.c psxshm.c
 
-daq_manage_SOURCES = tcldaq.c tclAppInit.c \
-       agent_clnt.c agent_xdr.c worker.c psxshm.c
+daq_manage_SOURCES = tcldaq.c tclAppInit.c     agent_clnt.c agent_xdr.c worker.c psxshm.c
 
-daq_agent_SOURCES = agent.c agent_svc.c agent_xdr.c \
-       worker.c psxshm.c
+daq_agent_SOURCES = agent.c agent_svc.c agent_xdr.c    worker.c psxshm.c
 
-daq_readout_SOURCES = readout.c \
-       worker.c \
-       subevt.c \
-       shmtrans.c hadtuqueue.c \
-               psxshm.c \
-               hadtu.c
+daq_readout_SOURCES = readout.c        worker.c        subevt.c        shmtrans.c hadtuqueue.c                 psxshm.c                hadtu.c
 
 daq_readout_LDADD = @hw_objects@
 daq_readout_DEPENDENCIES = @hw_objects@
 EXTRA_daq_readout_SOURCES = hwsoft.c hwrich.c hwrace.c rc.c hwmdc.c hwsam.c hwshow.c hwship.c hwtrig.c hwtip.c
-daq_memnet_SOURCES = memnet.c \
-       worker.c \
-       shmtrans.c hadtuqueue.c \
-               psxshm.c \
-       nettrans.c \
-               hadtu.c
-
-daq_netmem_SOURCES = netmem.c \
-       worker.c \
-       shmtrans.c hadtuqueue.c \
-               psxshm.c \
-       nettrans.c \
-               hadtu.c
-
-daq_evtbuild_SOURCES = evtbuild.c \
-       worker.c \
-       shmtrans.c hadtuqueue.c \
-               psxshm.c \
-       online.c online_svc.c online_xdr.c \
-               evt.c subevt.c \
-                       hadtu.c \
-       ansiTape.c ansiTapeLabel.c ansiTapeChar.c
-
-daq_ctrlctu_SOURCES = ctrlctu.c \
-       worker.c psxshm.c
+daq_memnet_SOURCES = memnet.c  worker.c        shmtrans.c hadtuqueue.c                 psxshm.c        nettrans.c              hadtu.c
+
+daq_netmem_SOURCES = netmem.c  worker.c        shmtrans.c hadtuqueue.c                 psxshm.c        nettrans.c              hadtu.c
+
+daq_evtbuild_SOURCES = evtbuild.c      worker.c        shmtrans.c hadtuqueue.c                 psxshm.c        online.c online_svc.c online_xdr.c              evt.c subevt.c                  hadtu.c         ansiTape.c ansiTapeLabel.c ansiTapeChar.c
+
+daq_ctrlctu_SOURCES = ctrlctu.c        worker.c psxshm.c
 
 daq_sniff_SOURCES = sniff.c online_clnt.c online_xdr.c
 daq_anal_SOURCES = showevt.c hldread.c evt.c subevt.c hadtu.c
@@ -494,19 +468,19 @@ maintainer-clean-generic clean mostlyclean distclean maintainer-clean
 
 
 .x_clnt.c:
-       rpcgen -l $< > $@
+       (echo "#define _BSD_SOURCE"; rpcgen -l $<) > $@
 
 .x_svc.c:
-       rpcgen -s tcp $< > $@
+       (echo "#define _BSD_SOURCE"; rpcgen -s tcp $<) > $@
 
 .x_xdr.c:
-       rpcgen -c $< > $@
+       (echo "#define _BSD_SOURCE"; rpcgen -c $<) > $@
 
 .x.h:
        rpcgen -h $< > $@
 
 online_svc.c: online.x
-       rpcgen -m online.x >online_svc.c
+       (echo "#define _BSD_SOURCE"; rpcgen -m online.x) >online_svc.c
 
 clean-local:
        rm -f agent.h online.h *_clnt.c *_svc.c *_xdr.c
index c3eb040a4c07dc3dca74e613476105e96c4a9aff..7c2aee0e92dc41c9fd9579b7f3ec73d604b89b5c 100644 (file)
@@ -1,6 +1,6 @@
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/agent.c,v 6.8 2002-10-09 12:42:17 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/agent.c,v 6.9 2002-10-28 07:41:18 hadaq Exp $";
 
-#define _POSIX_C_SOURCE 199309L
+#define _GNU_SOURCE
 #include <unistd.h>
 #include <rpc/rpc.h>
 #include "agent.h"
@@ -90,3 +90,17 @@ int * rpcworker_stop_1_svc(int *dummy, struct svc_req *x)
 {
        return rpcworker_stop_1(dummy, NULL);
 }
+
+int *rpcsystem_1(char **command, CLIENT * cl)
+{
+       static int retVal;
+
+       retVal = system(*command);
+
+       return &retVal;
+}
+
+int * rpcsystem_1_svc(char **dummy, struct svc_req *x)
+{
+       return rpcsystem_1(dummy, NULL);
+}
index 2f498fe560336efd5278774301c8676b526f0278..e3f5a528097ac151962e2a2365d1ce1a04fc068d 100644 (file)
@@ -10,5 +10,6 @@ program DAQAGENTPROG {
                int RpcWorker_start(RpcWorker_startArgs) = 1;
                string RpcWorker_status(int) = 2;
                int RpcWorker_stop(int) = 3;
+               int RpcSystem(string) = 4;
        } = 1;
 } = 0x20000002;
index 4c40a0357c5b2e84aab6f6b105dba138e297e64d..c5f26e453ef8908075d407442af5217e99c7daa7 100644 (file)
@@ -1,7 +1,8 @@
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/sniff.c,v 6.5 2002-10-09 12:42:19 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/sniff.c,v 6.6 2002-10-28 07:41:18 hadaq Exp $";
 
 
 #define SYSLOG_NAMES
+#define _GNU_SOURCE
 #include <unistd.h>
 
 #include <stdlib.h>
index c90776207eed103f6366862fc2976b7be89fb4c6..cfb93d9eba1317283402f3acc0017565f1e5fe11 100644 (file)
@@ -1,6 +1,6 @@
-static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/tcldaq.c,v 6.5 2002-10-09 12:42:19 hadaq Exp $";
+static char *rcsId = "$Header: /misc/hadesprojects/daq/cvsroot/eventbuilder/hadaq/tcldaq.c,v 6.6 2002-10-28 07:41:18 hadaq Exp $";
 
-#define _POSIX_C_SOURCE 199309L
+#define _GNU_SOURCE
 #include <unistd.h>
 
 #include <stddef.h>
@@ -91,6 +91,26 @@ int WorkerCmd(ClientData clientData, Tcl_Interp * interp, int argc, char *argv[]
        return TCL_OK;
 }
 
+int SystemCmd(ClientData clientData, Tcl_Interp * interp, int argc, char *argv[])
+{
+       CLIENT *cl;
+       int res, *resP;
+
+       if (argc < 3) {
+               Tcl_AppendResult(interp, "usage: c_system <agent> command", NULL);
+               return TCL_ERROR;
+       }
+       sscanf(argv[1], "%p", &cl);
+       if (NULL == (resP = rpcsystem_1(&argv[2], cl))) {
+               Tcl_AppendResult(interp, clnt_sperror(cl, "rpcsystem_1"), NULL);
+               return TCL_ERROR;
+       }
+       res = *resP;
+       sprintf(interp->result, "%d", res);
+
+       return TCL_OK;
+}
+
 int Daq_Init(Tcl_Interp * interp)
 {
        /*
@@ -99,6 +119,7 @@ int Daq_Init(Tcl_Interp * interp)
    */
        Tcl_CreateCommand(interp, "c_worker", WorkerCmd, (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
        Tcl_CreateCommand(interp, "c_agent", AgentCmd, (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
+       Tcl_CreateCommand(interp, "c_system", SystemCmd, (ClientData) NULL, (Tcl_CmdDeleteProc *) NULL);
 
        /*
    * Specify a user-specific startup file to invoke if the application