summaryrefslogtreecommitdiff
path: root/pager.c
diff options
context:
space:
mode:
authorLibravatar Ævar Arnfjörð Bjarmason <avarab@gmail.com>2021-02-02 02:59:57 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-02-01 21:15:58 -0800
commit61ff12fa50b051141dd3b451d74dde76a87fece3 (patch)
treeccd05c435f4d3b013c32f8f10a5082dd1218ef1d /pager.c
parentThe fourth batch (diff)
downloadtgif-61ff12fa50b051141dd3b451d74dde76a87fece3.tar.xz
pager: refactor wait_for_pager() function
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>
Diffstat (limited to 'pager.c')
-rw-r--r--pager.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/pager.c b/pager.c
index ee435de675..3d37dd7ada 100644
--- a/pager.c
+++ b/pager.c
@@ -11,29 +11,25 @@
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);
}