summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2007-11-11 07:29:37 (GMT)
committerJunio C Hamano <gitster@pobox.com>2007-11-12 01:09:55 (GMT)
commitb73a4397590df9582dd1c994cac30e55e26b0b1e (patch)
tree0b9e8f83a0f59e170954ea7d6b9d7e9c068d4941
parenta3b0079c6a2e6336b061465623b8f2db308a6978 (diff)
downloadgit-b73a4397590df9582dd1c994cac30e55e26b0b1e.zip
git-b73a4397590df9582dd1c994cac30e55e26b0b1e.tar.gz
git-b73a4397590df9582dd1c994cac30e55e26b0b1e.tar.bz2
run-command: Support sending stderr to /dev/null
Some callers may wish to redirect stderr to /dev/null in some contexts, such as if they are executing a command only to get the exit status and don't want users to see whatever output it may produce as a side-effect of computing that exit status. Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
-rw-r--r--run-command.c6
-rw-r--r--run-command.h1
2 files changed, 5 insertions, 2 deletions
diff --git a/run-command.c b/run-command.c
index d99a6c4..476d00c 100644
--- a/run-command.c
+++ b/run-command.c
@@ -41,7 +41,7 @@ int start_command(struct child_process *cmd)
cmd->close_out = 1;
}
- need_err = cmd->err < 0;
+ need_err = !cmd->no_stderr && cmd->err < 0;
if (need_err) {
if (pipe(fderr) < 0) {
if (need_in)
@@ -87,7 +87,9 @@ int start_command(struct child_process *cmd)
close(cmd->out);
}
- if (need_err) {
+ if (cmd->no_stderr)
+ dup_devnull(2);
+ else if (need_err) {
dup2(fderr[1], 2);
close_pair(fderr);
}
diff --git a/run-command.h b/run-command.h
index 94e1e9d..1fc781d 100644
--- a/run-command.h
+++ b/run-command.h
@@ -23,6 +23,7 @@ struct child_process {
unsigned close_out:1;
unsigned no_stdin:1;
unsigned no_stdout:1;
+ unsigned no_stderr:1;
unsigned git_cmd:1; /* if this is to be git sub-command */
unsigned stdout_to_stderr:1;
};