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.
This commit is contained in:
FRIGN 2015-03-09 15:01:29 +01:00
parent 6f207dac5f
commit a8bd21c0ab
3 changed files with 11 additions and 14 deletions

10
cron.c
View File

@ -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;

7
tar.c
View File

@ -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]);

View File

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