@@ -14,6 +14,7 @@ int pager_use_color = 1;
static struct child_process pager_process;
static char *pager_program;
+static int close_fd2;
/* Is the value coming back from term_columns() just a guess? */
static int term_columns_guessed;
@@ -23,7 +24,8 @@ static void close_pager_fds(void)
{
/* signal EOF to pager */
close(1);
- close(2);
+ if (close_fd2)
+ close(2);
}
static void wait_for_pager_atexit(void)
@@ -141,8 +143,10 @@ void setup_pager(void)
/* original process continues, but writes to the pipe */
dup2(pager_process.in, 1);
- if (isatty(2))
+ if (isatty(2)) {
+ close_fd2 = 1;
dup2(pager_process.in, 2);
+ }
close(pager_process.in);
/* this makes sure that the parent terminates after the pager */