Am 02.04.2013 12:31, schrieb Felipe Contreras: > And persistent_waitpid() to recover the information from the last run. I'm not a fan of this new API, because it looks like a workaround for a problem that should have been solved in a cleaner way. But if we can't avoid it, please also add a paragraph to Documentation/technical/api-run-command.txt > +int check_command(struct child_process *cmd) > +{ > + int status; > + pid_t waiting; > + > + if (cmd->last_status.valid) > + return 0; > + > + while ((waiting = waitpid(cmd->pid, &status, WNOHANG)) < 0 && errno == EINTR) > + ; /* nothing */ > + > + if (!waiting) > + return 1; > + > + if (waiting == cmd->pid) { > + cmd->last_status.valid = 1; > + cmd->last_status.status = status; > + return 0; > + } > + > + if (waiting > 0) > + die("BUG: waitpid reported a random pid?"); > + > + return 0; > +} > + > static void prepare_run_command_v_opt(struct child_process *cmd, > const char **argv, > int opt) > @@ -729,7 +770,7 @@ error: > int finish_async(struct async *async) > { > #ifdef NO_PTHREADS > - return wait_or_whine(async->pid, "child process"); > + return wait_or_whine(cmd, async->pid, "child process"); This breaks the NO_PTHREADS build because cmd is undeclared. Perhaps this on top: diff --git a/run-command.c b/run-command.c index a9fa779..a02ef62 100644 --- a/run-command.c +++ b/run-command.c @@ -230,7 +230,7 @@ static pid_t persistent_waitpid(struct child_process *cmd, pid_t pid, int *statu { pid_t waiting; - if (cmd->last_status.valid) { + if (cmd && cmd->last_status.valid) { *status = cmd->last_status.status; return pid; } @@ -771,7 +771,7 @@ int start_async(struct async *async) int finish_async(struct async *async) { #ifdef NO_PTHREADS - return wait_or_whine(cmd, async->pid, "child process"); + return wait_or_whine(NULL, async->pid, "child process"); #else void *ret = (void *)(intptr_t)(-1); -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html