summaryrefslogtreecommitdiff
path: root/run-command.c
diff options
context:
space:
mode:
authorStephen Boyd <sboyd@codeaurora.org>2013-01-30 18:01:05 -0800
committerJunio C Hamano <gitster@pobox.com>2013-02-01 14:11:50 -0800
commit939296c4a42b0eb22542f0fe2e50b53993489eff (patch)
treea731680c80eeaefec27ecced14aa133fc64aa56f /run-command.c
parent7e2010537e96d0a1144520222f20ba1dc3d61441 (diff)
downloadgit-939296c4a42b0eb22542f0fe2e50b53993489eff.tar.gz
run-command: be more informative about what failed
While debugging an error with verify_signed_buffer() the error messages from run-command weren't very useful: error: cannot create pipe for gpg: Too many open files error: could not run gpg. because they didn't indicate *which* pipe couldn't be created. Print which pipe failed to be created in the error message so we can more easily debug similar problems in the future. For example, the above error now prints: error: cannot create standard error pipe for gpg: Too many open files error: could not run gpg. Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'run-command.c')
-rw-r--r--run-command.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/run-command.c b/run-command.c
index 1101ef7237..ec1a664755 100644
--- a/run-command.c
+++ b/run-command.c
@@ -273,6 +273,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
@@ -285,6 +286,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];
@@ -300,6 +302,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];
@@ -317,9 +320,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;
}