sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

commit a8bd21c0abe727d3292ecdb533cb308cac408072
parent 6f207dac5ff858aac6827a4cd4ac78aa5d07a801
Author: FRIGN <dev@frign.de>
Date:   Mon,  9 Mar 2015 15:01:29 +0100

Use switch with fork()

Allows dropping a local variable if the explicit PID is not needed
and it makes it clearer what happens.
Also, one should always strive for consistency for cases like these.

Diffstat:
Mcron.c | 10+++++-----
Mtar.c | 7+++----
Mxargs.c | 8+++-----
3 files changed, 11 insertions(+), 14 deletions(-)

diff --git 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 @@ -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 @@ -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);