chiark / gitweb /
poll: Abolish max_nfds
[secnet.git] / process.c
index 0a7a0f262164ab75f8d908bfe2f0181a125ecc05..0a718e20b443e5827d59762602e162300b272df8 100644 (file)
--- a/process.c
+++ b/process.c
@@ -152,7 +152,7 @@ int sys_cmd(const char *path, const char *arg, ...)
                        path, arg, WTERMSIG(rv), strsignal(WTERMSIG(rv)),
                        WCOREDUMP(rv) ? " - core dumped" : "");
            else
-               Message(M_ERR, "sys_cmd(%s,%s,...) exited with wstat %#x",
+               Message(M_ERR, "sys_cmd(%s,%s,...) exited with wstat %#x\n",
                        path, arg, rv);
        }
     } else if (c==0) {
@@ -183,11 +183,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 +306,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 */