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",
- 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];
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;
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 */