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:
commit
b5b56ea40c
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user