]> git.stg.codes - stg.git/blobdiff - stglibs/scriptexecuter.lib/scriptexecuter.c
Fixed receiving partial streams.
[stg.git] / stglibs / scriptexecuter.lib / scriptexecuter.c
index 021407dde59faf253503f45135eb2b16b52f0c29..bdf60230f3530a72225fd62920ba6af8375f089d 100644 (file)
@@ -1,15 +1,14 @@
 #include <sys/types.h>
 #include <sys/ipc.h>
 #include <sys/msg.h>
+
 #include <stdlib.h>
 #include <unistd.h>
-
 #include <string.h>
 #include <errno.h>
 #include <signal.h>
 
-#include "scriptexecuter.h"
-
+#include "stg/scriptexecuter.h"
 
 #define MAX_SCRIPT_LEN  (1100)
 
@@ -41,27 +40,28 @@ if (msgsnd(msgid, (void *)&sd, MAX_SCRIPT_LEN, 0) < 0)
 return 0;
 }
 //-----------------------------------------------------------------------------
-#ifdef LINUX
+#if defined(LINUX) || defined(DARWIN)
 void Executer(int msgID, pid_t pid, char * procName)
 #else
 void Executer(int msgID, pid_t pid)
 #endif
 {
+struct SCRIPT_DATA sd;
+struct sigaction newsa, oldsa;
+sigset_t sigmask;
+
 msgid = msgID;
 if (pid)
     return;
 nonstop = 1;
 
-#ifdef LINUX
+#if defined(LINUX) || defined(DARWIN)
 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;
@@ -90,21 +90,17 @@ newsa.sa_mask = sigmask;
 newsa.sa_flags = 0;
 sigaction(SIGUSR1, &newsa, &oldsa);
 
-int ret;
-
-struct SCRIPT_DATA sd;
-
 while (nonstop)
     {
     sd.mtype = 1;
-    ret = msgrcv(msgid, &sd, MAX_SCRIPT_LEN, 0, 0);
+    int ret = msgrcv(msgid, &sd, MAX_SCRIPT_LEN, 0, 0);
 
     if (ret < 0)
         {
         usleep(20000);
         continue;
         }
-    int ret = system(sd.script);
+    ret = system(sd.script);
     if (ret == -1)
         {
         // Fork failed