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

Re: [RFC/PATCH] pager: do not fork a pager if environment variable PAGER is set to NONE

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Apr 16, 2006, 02:44 UTC
Message-ID
<Pine.LNX.4.63.0604160438370.32484@wbgn013.biozentrum.uni-wuerzburg.de>
In-Reply-To
<7v4q0udzwg.fsf@assigned-by-dhcp.cox.net>
Hi,
On Sat, 15 Apr 2006, Junio C Hamano wrote:
Show 5 quoted lines
> A somewhat related topic; I often set PAGER=cat when I do not
> want the --[More]-- prompt and I thing many Emacs users do this.
> It might also be good to detect it and omit piping in such a
> case, but that is independent, so if you are going to do this as
> well, please make it a separate patch.

I was not quite sure if PAGER=cat could be taken as "user does not want any pager to be fork()ed", but you are probably right: PAGER=cat means that stdout is forwarded to stdout, i.e. we are better off not fork()ing and calling "cat":

--- [PATCH] pager: do not fork a pager if PAGER=cat

This helps debugging tremendously.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
 pager.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)
4a617a436bba9288cec5d3918d02c5b0e652df98
diff --git a/pager.c b/pager.c
index 1364e15..86e93b3 100644
--- a/pager.c
+++ b/pager.c
@@ -5,9 +5,8 @@ #include "cache.h"
  * something different on Windows, for example.
  */
 
-static void run_pager(void)
+static void run_pager(const char *prog)
 {
-	const char *prog = getenv("PAGER");
 	if (!prog)
 		prog = "less";
 	setenv("LESS", "-S", 0);
@@ -16,10 +15,11 @@ static void run_pager(void)
 
 void setup_pager(void)
 {
+	const char *prog = getenv("PAGER");
 	pid_t pid;
 	int fd[2];
 
-	if (!isatty(1))
+	if (!isatty(1) || (prog != NULL && !strcmp(prog, "cat")))
 		return;
 	if (pipe(fd) < 0)
 		return;
@@ -43,6 +43,6 @@ void setup_pager(void)
 	close(fd[0]);
 	close(fd[1]);
 
-	run_pager();
+	run_pager(prog);
 	exit(255);
 }
-- 
1.3.0.rc4.gb6b20-dirty
Previous: Junio C Hamano
Message 5 of 5 in “pager: do not fork a pager if environment variable PAGER is set to NONE”
  1. pager: do not fork a pager if environment variable PAGER is set to NONEJohannes Schindelin, Apr 15, 2006
  2. Junio C HamanoApr 15, 2006
  3. Johannes SchindelinApr 16, 2006
  4. Junio C HamanoApr 16, 2006
  5. Johannes SchindelinApr 16, 2006

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.