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>
This commit is contained in:
Shawn O. Pearce 2007-11-11 02:29:37 -05:00 коммит произвёл Junio C Hamano
Родитель a3b0079c6a
Коммит b73a439759
2 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -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);
}

Просмотреть файл

@ -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;
};