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