summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2008-12-15 00:33:34 -0800
committerJunio C Hamano <gitster@pobox.com>2008-12-15 01:37:15 -0800
commita8335024c294db470e16e9df3aaa346bfcfbeacb (patch)
tree1fb2b119ec62cb4606294e4a509c3d271b3c53e0
parentd2dadfe890b5da6f65fe061a414b6ec67c5efe9c (diff)
downloadgit-a8335024c294db470e16e9df3aaa346bfcfbeacb.tar.gz
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 <gitster@pobox.com>
-rw-r--r--pager.c3
1 files changed, 2 insertions, 1 deletions
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 */