chiark / gitweb /
portability: use socklen_t for argument to recvfrom
[secnet.git] / process.c
index f2a2e4271671c9dd60b31be0a4bc152762f632b4..968e93c3e92db76c92dcd2bcb67b2a2d5d8f8a26 100644 (file)
--- a/process.c
+++ b/process.c
@@ -30,7 +30,7 @@ static sigset_t registered,pending;
 
 struct child {
     pid_t pid;
-    string_t desc;
+    cstring_t desc;
     process_callback_fn *cb;
     void *cst;
     bool_t finished;
@@ -57,7 +57,7 @@ static void set_default_signals(void);
    their exit status using the callback function.  We block SIGCHLD
    until signal processing has begun. */
 pid_t makesubproc(process_entry_fn *entry, process_callback_fn *cb,
-                void *est, void *cst, string_t desc)
+                void *est, void *cst, cstring_t desc)
 {
     struct child *c;
     pid_t p;
@@ -140,7 +140,7 @@ static void sigchld_handler(void *st, int signum)
     }
 }
 
-int sys_cmd(const char *path, char *arg, ...)
+int sys_cmd(const char *path, const char *arg, ...)
 {
     va_list ap;
     int rv;
@@ -155,7 +155,12 @@ int sys_cmd(const char *path, char *arg, ...)
        char *args[100];
        int i;
        /* Child -> exec command */
-       args[0]=arg;
+       /* Really we ought to strcpy() the arguments into the args array,
+          since the arguments are const char *.  Since we'll exit anyway
+          if the execvp() fails this seems somewhat pointless, and
+          increases the chance of the child process failing before it
+          gets to exec(). */
+       args[0]=(char *)arg;
        i=1;
        while ((args[i++]=va_arg(ap,char *)));
        execvp(path,args);
@@ -171,8 +176,7 @@ int sys_cmd(const char *path, char *arg, ...)
 
 static beforepoll_fn signal_beforepoll;
 static int signal_beforepoll(void *st, struct pollfd *fds, int *nfds_io,
-                            int *timeout_io, const struct timeval *tv_now,
-                            uint64_t *now)
+                            int *timeout_io)
 {
     if (*nfds_io<1) {
        *nfds_io=1;
@@ -185,8 +189,7 @@ static int signal_beforepoll(void *st, struct pollfd *fds, int *nfds_io,
 }
 
 static afterpoll_fn signal_afterpoll;
-static void signal_afterpoll(void *st, struct pollfd *fds, int nfds,
-                            const struct timeval *tv, uint64_t *now)
+static void signal_afterpoll(void *st, struct pollfd *fds, int nfds)
 {
     uint8_t buf[16];
     struct signotify *n;