diff --git a/cron.c b/cron.c index 88eb96f..b919c66 100644 --- a/cron.c +++ b/cron.c @@ -102,20 +102,20 @@ runjob(char *cmd) } } - pid = fork(); - if (pid < 0) { + switch ((pid = fork())) { + case -1: logerr("error: failed to fork job: %s time: %s", cmd, ctime(&t)); return; - } else if (pid == 0) { + case 0: setsid(); loginfo("run: %s pid: %d at %s", cmd, getpid(), ctime(&t)); execl("/bin/sh", "/bin/sh", "-c", cmd, (char *)NULL); - logerr("error: failed to execute job: %s time: %s", + logwarn("error: failed to execute job: %s time: %s", cmd, ctime(&t)); _exit(1); - } else { + default: je = emalloc(sizeof(*je)); je->cmd = estrdup(cmd); je->pid = pid; diff --git a/tar.c b/tar.c index d847c9d..9e00d87 100644 --- a/tar.c +++ b/tar.c @@ -47,17 +47,16 @@ static char filtermode; static FILE * decomp(FILE *fp) { - pid_t pid; int fds[2]; if (pipe(fds) < 0) eprintf("pipe:"); - pid = fork(); - if (pid < 0) { + switch (fork()) { + case -1: weprintf("fork:"); _exit(1); - } else if (!pid) { + case 0: dup2(fileno(fp), 0); dup2(fds[1], 1); close(fds[0]); diff --git a/xargs.c b/xargs.c index 983eeb2..322dcd5 100644 --- a/xargs.c +++ b/xargs.c @@ -164,15 +164,13 @@ waitchld(void) static void spawn(void) { - pid_t pid; int savederrno; - pid = fork(); - if (pid < 0) { + switch (fork()) { + case -1: weprintf("fork:"); _exit(1); - } - if (pid == 0) { + case 0: execvp(*cmd, cmd); savederrno = errno; weprintf("execvp %s:", *cmd);