From: Junio C Hamano Date: Mon, 15 Dec 2008 08:33:34 +0000 (-0800) Subject: pager: do not dup2 stderr if it is already redirected X-Git-Tag: v1.6.0.6~8 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/a8335024c294db470e16e9df3aaa346bfcfbeacb pager: do not dup2 stderr if it is already redirected An earlier commit 61b8050 (sending errors to stdout under $PAGER, 2008-02-16) avoided losing the error messages that are sent to the standard error when $PAGER is in effect by dup2'ing fd 2 to the pager. his way, showing a tag object that points to a bad object: $ git show tag-foo would give the error message to the pager. However, it was not quite right if the user did: $ git show 2>error.log tag-foo i.e. use the pager but store the errors in a separate file. Signed-off-by: Junio C Hamano --- diff --git a/pager.c b/pager.c index 6b5c9e44b4..0b7e55f476 100644 --- a/pager.c +++ b/pager.c @@ -102,7 +102,8 @@ void setup_pager(void) /* original process continues, but writes to the pipe */ dup2(pager_process.in, 1); - dup2(pager_process.in, 2); + if (isatty(2)) + dup2(pager_process.in, 2); close(pager_process.in); /* this makes sure that the parent terminates after the pager */