X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=process.c;h=0a718e20b443e5827d59762602e162300b272df8;hb=f1393100aa5412f0df5ee363c6bdd42b2465fa59;hp=a9ff3d92648557d7692d9da97fe864c41227a5fe;hpb=39a6b1e27fba043e9f988fa10f76ea68b796cbfd;p=secnet.git diff --git a/process.c b/process.c index a9ff3d9..0a718e2 100644 --- a/process.c +++ b/process.c @@ -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(®istered); 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 */