Hi, This is a reroll to fix the build with NO_PTHREADS, and also a bit of cleanup. The interdiff: --- b/run-command.c +++ a/run-command.c @@ -226,27 +226,20 @@ static inline void set_cloexec(int fd) fcntl(fd, F_SETFD, flags | FD_CLOEXEC); } -static pid_t persistent_waitpid(struct child_process *cmd, pid_t pid, int *status) -{ - pid_t waiting; - - if (cmd->last_status.valid) { - *status = cmd->last_status.status; - return pid; - } - - while ((waiting = waitpid(pid, status, 0)) < 0 && errno == EINTR) - ; /* nothing */ - return waiting; -} - static int wait_or_whine(struct child_process *cmd, pid_t pid, const char *argv0) { int status, code = -1; pid_t waiting; int failed_errno = 0; - waiting = persistent_waitpid(cmd, pid, &status); + /* First try the last status from check_command() */ + if (cmd && cmd->last_status.valid) { + status = cmd->last_status.status; + waiting = pid; + } else { + while ((waiting = waitpid(pid, status, 0)) < 0 && errno == EINTR) + ; /* nothing */ + } if (waiting < 0) { failed_errno = errno; @@ -770,7 +763,7 @@ error: 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); Felipe Contreras (2): run-command: add new check_command helper transport-helper: check if remote helper is alive git-remote-testgit | 11 +++++++++++ run-command.c | 46 ++++++++++++++++++++++++++++++++++++++++------ run-command.h | 5 +++++ t/t5801-remote-helpers.sh | 19 +++++++++++++++++++ transport-helper.c | 8 ++++++++ 5 files changed, 83 insertions(+), 6 deletions(-) -- 1.8.2 -- 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