Merge branch 'sb/run-command-fd-error-reporting'

* sb/run-command-fd-error-reporting:
  run-command: be more informative about what failed
This commit is contained in:
Junio C Hamano 2013-02-07 14:41:42 -08:00
commit b5b56ea40c

View file

@ -274,6 +274,7 @@ int start_command(struct child_process *cmd)
int need_in, need_out, need_err;
int fdin[2], fdout[2], fderr[2];
int failed_errno = failed_errno;
char *str;
/*
* In case of errors we must keep the promise to close FDs
@ -286,6 +287,7 @@ int start_command(struct child_process *cmd)
failed_errno = errno;
if (cmd->out > 0)
close(cmd->out);
str = "standard input";
goto fail_pipe;
}
cmd->in = fdin[1];
@ -301,6 +303,7 @@ int start_command(struct child_process *cmd)
close_pair(fdin);
else if (cmd->in)
close(cmd->in);
str = "standard output";
goto fail_pipe;
}
cmd->out = fdout[0];
@ -318,9 +321,10 @@ int start_command(struct child_process *cmd)
close_pair(fdout);
else if (cmd->out)
close(cmd->out);
str = "standard error";
fail_pipe:
error("cannot create pipe for %s: %s",
cmd->argv[0], strerror(failed_errno));
error("cannot create %s pipe for %s: %s",
str, cmd->argv[0], strerror(failed_errno));
errno = failed_errno;
return -1;
}