From 402461aab17292b78bd36a17bff18e48d544cc9a Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sun, 16 Apr 2006 04:44:25 +0200 Subject: [PATCH 1/2] pager: do not fork a pager if PAGER is set to empty. This skips an extra pipe, and helps debugging tremendously. [jc: PAGER=cat is a questionable hack and should be done as a separate patch. ] Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- pager.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/pager.c b/pager.c index 1364e15d23..e5ba2738b6 100644 --- a/pager.c +++ b/pager.c @@ -5,22 +5,24 @@ * something different on Windows, for example. */ -static void run_pager(void) +static void run_pager(const char *pager) { - const char *prog = getenv("PAGER"); - if (!prog) - prog = "less"; - setenv("LESS", "-S", 0); - execlp(prog, prog, NULL); + execlp(pager, pager, NULL); } void setup_pager(void) { pid_t pid; int fd[2]; + const char *pager = getenv("PAGER"); if (!isatty(1)) return; + if (!pager) + pager = "less"; + else if (!*pager) + return; + if (pipe(fd) < 0) return; pid = fork(); @@ -43,6 +45,7 @@ void setup_pager(void) close(fd[0]); close(fd[1]); - run_pager(); + setenv("LESS", "-S", 0); + run_pager(pager); exit(255); } From caef71a5354ca162cc5a6914a7a643efbc9ae28a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 16 Apr 2006 01:46:08 -0700 Subject: [PATCH 2/2] Do not fork PAGER=cat Unless the user has a nonstandard "cat" command that does not meow like a cat, this should not break anything and would save an extra pipe. Signed-off-by: Junio C Hamano --- pager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pager.c b/pager.c index e5ba2738b6..b063353d96 100644 --- a/pager.c +++ b/pager.c @@ -20,7 +20,7 @@ void setup_pager(void) return; if (!pager) pager = "less"; - else if (!*pager) + else if (!*pager || !strcmp(pager, "cat")) return; if (pipe(fd) < 0)