From: Shawn O. Pearce Date: Sun, 11 Nov 2007 07:29:37 +0000 (-0500) Subject: run-command: Support sending stderr to /dev/null X-Git-Tag: v1.5.4-rc0~203^2~2 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=b73a4397590df9582dd1c994cac30e55e26b0b1e;p=git.git 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 --- diff --git a/run-command.c b/run-command.c index d99a6c4ea..476d00c21 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 94e1e9d51..1fc781d76 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; };