From 20c0a0b1e759d2bc171694c8e290146c60c61e31 Mon Sep 17 00:00:00 2001 From: sin Date: Tue, 7 Jan 2014 14:50:59 +0000 Subject: [PATCH] Factor out waiting for children into a separate function --- xargs.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/xargs.c b/xargs.c index b77c90f..77da254 100644 --- 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(); +}