]> git.ipfire.org Git - thirdparty/git.git/commitdiff
pager: refactor wait_for_pager() function
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Tue, 2 Feb 2021 01:59:57 +0000 (02:59 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 2 Feb 2021 05:15:58 +0000 (21:15 -0800)
Refactor the wait_for_pager() function. Since 507d7804c0b (pager:
don't use unsafe functions in signal handlers, 2015-09-04) the
wait_for_pager() and wait_for_pager_atexit() callers diverged on more
than they shared.

Let's extract the common code into a new close_pager_fds() helper, and
move the parts unique to the only to callers to those functions.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pager.c

diff --git a/pager.c b/pager.c
index ee435de67562dc5a3142a153e41672c292924640..3d37dd7adaa27ed1b6bc3952711b11ff6dfc0f56 100644 (file)
--- a/pager.c
+++ b/pager.c
 static struct child_process pager_process = CHILD_PROCESS_INIT;
 static const char *pager_program;
 
-static void wait_for_pager(int in_signal)
+static void close_pager_fds(void)
 {
-       if (!in_signal) {
-               fflush(stdout);
-               fflush(stderr);
-       }
        /* signal EOF to pager */
        close(1);
        close(2);
-       if (in_signal)
-               finish_command_in_signal(&pager_process);
-       else
-               finish_command(&pager_process);
 }
 
 static void wait_for_pager_atexit(void)
 {
-       wait_for_pager(0);
+       fflush(stdout);
+       fflush(stderr);
+       close_pager_fds();
+       finish_command(&pager_process);
 }
 
 static void wait_for_pager_signal(int signo)
 {
-       wait_for_pager(1);
+       close_pager_fds();
+       finish_command_in_signal(&pager_process);
        sigchain_pop(signo);
        raise(signo);
 }