From 6e9af863ee76423ec8416ad16140ef5f810783bf Mon Sep 17 00:00:00 2001 From: Jeff King Date: Tue, 11 Dec 2007 01:27:33 -0500 Subject: Support GIT_PAGER_IN_USE environment variable When deciding whether or not to turn on automatic color support, git_config_colorbool checks whether stdout is a tty. However, because we run a pager, if stdout is not a tty, we must check whether it is because we started the pager. This used to be done by checking the pager_in_use variable. This variable was set only when the git program being run started the pager; there was no way for an external program running git indicate that it had already started a pager. This patch allows a program to set GIT_PAGER_IN_USE to a true value to indicate that even though stdout is not a tty, it is because a pager is being used. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- pager.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'pager.c') diff --git a/pager.c b/pager.c index fb7a1a625a..0376953cb1 100644 --- a/pager.c +++ b/pager.c @@ -5,6 +5,8 @@ * something different on Windows, for example. */ +static int spawned_pager; + static void run_pager(const char *pager) { /* @@ -41,7 +43,7 @@ void setup_pager(void) else if (!*pager || !strcmp(pager, "cat")) return; - pager_in_use = 1; /* means we are emitting to terminal */ + spawned_pager = 1; /* means we are emitting to terminal */ if (pipe(fd) < 0) return; @@ -70,3 +72,14 @@ void setup_pager(void) die("unable to execute pager '%s'", pager); exit(255); } + +int pager_in_use(void) +{ + const char *env; + + if (spawned_pager) + return 1; + + env = getenv("GIT_PAGER_IN_USE"); + return env ? git_config_bool("GIT_PAGER_IN_USE", env) : 0; +} -- cgit v1.2.1