sbase

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

commit 20c0a0b1e759d2bc171694c8e290146c60c61e31
parent e27c55aec3550024a66a2b8a32047b7518b2cac1
Author: sin <sin@2f30.org>
Date:   Tue,  7 Jan 2014 14:50:59 +0000

Factor out waiting for children into a separate function

Diffstat:
Mxargs.c | 33+++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)

diff --git a/xargs.c b/xargs.c @@ -20,6 +20,7 @@ static int parsequote(int); static int parseescape(void); static char *poparg(void); static void pusharg(char *); +static void waitchld(void); static void runcmd(void); static char **cmd; @@ -232,20 +233,10 @@ pusharg(char *arg) } static void -runcmd(void) +waitchld(void) { - pid_t pid; - int status, saved_errno; + int status; - pid = fork(); - if (pid < 0) - eprintf("fork:"); - if (pid == 0) { - execvp(*cmd, cmd); - saved_errno = errno; - weprintf("execvp %s:", *cmd); - _exit(saved_errno == ENOENT ? 127 : 126); - } wait(&status); if (WIFEXITED(status)) { if (WEXITSTATUS(status) == 255) @@ -259,3 +250,21 @@ runcmd(void) if (WIFSIGNALED(status)) exit(125); } + +static void +runcmd(void) +{ + pid_t pid; + int saved_errno; + + pid = fork(); + if (pid < 0) + eprintf("fork:"); + if (pid == 0) { + execvp(*cmd, cmd); + saved_errno = errno; + weprintf("execvp %s:", *cmd); + _exit(saved_errno == ENOENT ? 127 : 126); + } + waitchld(); +}