X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/ab494c1e3eafc27c84c8cf0eb5e5ad8ef37389bc..bdd372a64811c52e2924c6d391ce6801aabc8ada:/stglibs/scriptexecuter.lib/scriptexecuter.cpp diff --git a/stglibs/scriptexecuter.lib/scriptexecuter.cpp b/stglibs/scriptexecuter.lib/scriptexecuter.cpp deleted file mode 100644 index abe0185c..00000000 --- a/stglibs/scriptexecuter.lib/scriptexecuter.cpp +++ /dev/null @@ -1,121 +0,0 @@ -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "stg/common.h" -#include "scriptexecuter.h" - -using namespace std; - -#define MAX_SCRIPT_LEN (1100) - -static int msgid; -static bool nonstop; - -//----------------------------------------------------------------------------- -struct SCRIPT_DATA -{ - long mtype; - char script[MAX_SCRIPT_LEN]; -} sd; -//----------------------------------------------------------------------------- -static void CatchUSR1Executer(int) -{ -nonstop = false; -} -//----------------------------------------------------------------------------- -int ScriptExec(const string & str) -{ -if (str.length() >= MAX_SCRIPT_LEN) - { - printfd(__FILE__, "ScriptExec() - script params exceeds MAX_SCRIPT_LENGTH (%d > %d)\n", str.length(), MAX_SCRIPT_LEN); - return -1; - } - -strncpy(sd.script, str.c_str(), MAX_SCRIPT_LEN); -sd.mtype = 1; -if (msgsnd(msgid, (void *)&sd, MAX_SCRIPT_LEN, 0) < 0) - { - printfd(__FILE__, "ScriptExec() - failed to send message to the IPC queue: '%s'\n", strerror(errno)); - return -1; - } -return 0; -} -//----------------------------------------------------------------------------- -#ifdef LINUX -void Executer(int, int msgID, pid_t pid, char * procName) -#else -void Executer(int, int msgID, pid_t pid, char *) -#endif -{ -msgid = msgID; -if (pid) - return; -nonstop = true; - -#ifdef LINUX -memset(procName, 0, strlen(procName)); -strcpy(procName, "stg-exec"); -#else -setproctitle("stg-exec"); -#endif - -struct sigaction newsa, oldsa; -sigset_t sigmask; - -sigemptyset(&sigmask); -sigaddset(&sigmask, SIGTERM); -newsa.sa_handler = SIG_IGN; -newsa.sa_mask = sigmask; -newsa.sa_flags = 0; -sigaction(SIGTERM, &newsa, &oldsa); - -sigemptyset(&sigmask); -sigaddset(&sigmask, SIGINT); -newsa.sa_handler = SIG_IGN; -newsa.sa_mask = sigmask; -newsa.sa_flags = 0; -sigaction(SIGINT, &newsa, &oldsa); - -sigemptyset(&sigmask); -sigaddset(&sigmask, SIGHUP); -newsa.sa_handler = SIG_IGN; -newsa.sa_mask = sigmask; -newsa.sa_flags = 0; -sigaction(SIGHUP, &newsa, &oldsa); - -sigemptyset(&sigmask); -sigaddset(&sigmask, SIGUSR1); -newsa.sa_handler = CatchUSR1Executer; -newsa.sa_mask = sigmask; -newsa.sa_flags = 0; -sigaction(SIGUSR1, &newsa, &oldsa); - -int ret; - -SCRIPT_DATA sd; - -while (nonstop) - { - sd.mtype = 1; - ret = msgrcv(msgid, &sd, MAX_SCRIPT_LEN, 0, 0); - - if (ret < 0) - { - usleep(20000); - continue; - } - int ret = system(sd.script); - if (ret == -1) - { - // Fork failed - } - } -} -//-----------------------------------------------------------------------------