chiark / gitweb /
logging: Use lg_exitstatus
[secnet.git] / process.c
index a9ff3d92648557d7692d9da97fe864c41227a5fe..b75b9c0d6e70159ec60d56738e4e6bfe05a551f7 100644 (file)
--- a/process.c
+++ b/process.c
@@ -143,17 +143,8 @@ int sys_cmd(const char *path, const char *arg, ...)
            fatal("sys_cmd: waitpid for %s returned wrong process ID!",
                  path);
        if (rv) {
-           /* If the command failed reporting its exit status */
-           if (WIFEXITED(rv))
-               Message(M_ERR, "sys_cmd(%s,%s,...) exited with status %d\n",
-                       path, arg, WEXITSTATUS(rv));
-           else if(WIFSIGNALED(rv))
-               Message(M_ERR, "sys_cmd(%s,%s,...) exited with signal %d (%s)%s\n",
-                       path, arg, WTERMSIG(rv), strsignal(WTERMSIG(rv)),
-                       WCOREDUMP(rv) ? " - core dumped" : "");
-           else
-               Message(M_ERR, "sys_cmd(%s,%s,...) exited with wstat %#x\n",
-                       path, arg, rv);
+           /* If the command failed report its exit status */
+           lg_exitstatus(0,"sys_cmd",0,M_ERR,rv,path);
        }
     } else if (c==0) {
        char *args[100];
@@ -183,11 +174,7 @@ static beforepoll_fn signal_beforepoll;
 static int signal_beforepoll(void *st, struct pollfd *fds, int *nfds_io,
                             int *timeout_io)
 {
-    if (*nfds_io<1) {
-       *nfds_io=1;
-       return ERANGE;
-    }
-    *nfds_io=1;
+    BEFOREPOLL_WANT_FDS(1);
     fds[0].fd=spr;
     fds[0].events=POLLIN;
     return 0;
@@ -310,16 +297,14 @@ void start_signal_handling(void)
     sigemptyset(&registered);
     sigemptyset(&pending);
 
-    if (pipe(p)!=0) {
-       fatal_perror("start_signal_handling: pipe");
-    }
+    pipe_cloexec(p);
     spw=p[1];
     spr=p[0];
     if (fcntl(spw, F_SETFL, fcntl(spw, F_GETFL)|O_NONBLOCK)==-1) {
        fatal_perror("start_signal_handling: fcntl(O_NONBLOCK)");
     }
 
-    register_for_poll(NULL,signal_beforepoll,signal_afterpoll,1,"signal");
+    register_for_poll(NULL,signal_beforepoll,signal_afterpoll,"signal");
     signal_handling=True;
 
     /* Register signal handlers for all the signals we're interested in */