git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] pager: use an environment variable for pager_in_use

From
MLMatthias Lederhofer <matled@gmx.net>
Date
Feb 16, 2007, 18:22 UTC
Message-ID
<20070216182231.GA31676@moooo.ath.cx>
In-Reply-To
<20070216155658.GB7183@coredump.intra.peff.net>

When running a shell script the value of pager_in_use is lost for later processes. Therefore pager_in_use is replaced by the environment variable GIT_PAGER_IN_USE.

Signed-off-by: Matthias Lederhofer <matled@gmx.net>
---
Jeff King <peff@peff.net> wrote:
> Your analysis looks right to me.  I think you would need to set
> GIT_PAGER_IN_USE in the environment whenever you turn on the pager in
> the git wrapper, and then set git's internal pager_in_use variable based
> on that.
This patch replaces pager_in_use because pager_in_use was only used at
two places (one sets it, the other reads it).
---
 cache.h       |    1 -
 color.c       |    2 +-
 environment.c |    1 -
 pager.c       |    3 ++-
 4 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/cache.h b/cache.h
index c62b0b0..aeaac9f 100644
--- a/cache.h
+++ b/cache.h
@@ -445,7 +445,6 @@ extern int write_or_whine_pipe(int fd, const void *buf, size_t count, const char
 
 /* pager.c */
 extern void setup_pager(void);
-extern int pager_in_use;
 extern int pager_use_color;
 
 /* base85 */
diff --git a/color.c b/color.c
index 09d82ee..50e073a 100644
--- a/color.c
+++ b/color.c
@@ -121,7 +121,7 @@ int git_config_colorbool(const char *var, const char *value)
 	if (!value)
 		return 1;
 	if (!strcasecmp(value, "auto")) {
-		if (isatty(1) || (pager_in_use && pager_use_color)) {
+		if (isatty(1) || (getenv("GIT_PAGER_IN_USE") && pager_use_color)) {
 			char *term = getenv("TERM");
 			if (term && strcmp(term, "dumb"))
 				return 1;
diff --git a/environment.c b/environment.c
index 54c22f8..5b477c3 100644
--- a/environment.c
+++ b/environment.c
@@ -26,7 +26,6 @@ const char *apply_default_whitespace;
 int zlib_compression_level = Z_DEFAULT_COMPRESSION;
 size_t packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE;
 size_t packed_git_limit = DEFAULT_PACKED_GIT_LIMIT;
-int pager_in_use;
 int pager_use_color = 1;
 
 static const char *git_dir;
diff --git a/pager.c b/pager.c
index 5f280ab..f59c94f 100644
--- a/pager.c
+++ b/pager.c
@@ -38,7 +38,8 @@ void setup_pager(void)
 	else if (!*pager || !strcmp(pager, "cat"))
 		return;
 
-	pager_in_use = 1; /* means we are emitting to terminal */
+	/* means we are emitting to terminal */
+	setenv("GIT_PAGER_IN_USE", "1", 0);
 
 	if (pipe(fd) < 0)
 		return;
-- 
1.5.0
Previous: Jeff KingNext: Johannes Schindelin
Message 3 of 7 in “[BUG] git -p status does not use colors”
  1. Matthias LederhoferFeb 16, 2007
  2. Jeff KingFeb 16, 2007
  3. pager: use an environment variable for pager_in_useMatthias Lederhofer, Feb 16, 2007
  4. Johannes SchindelinFeb 16, 2007
  5. Matthias LederhoferFeb 16, 2007
  6. Johannes SchindelinFeb 16, 2007
  7. Simon 'corecode' SchubertFeb 16, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.