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 <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
591aa2536f
commit
6e9af863ee
15
pager.c
15
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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user