Skip to content

Commit

Permalink
pager: do not fork a pager if PAGER is set to empty.
Browse files Browse the repository at this point in the history
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 <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Johannes Schindelin authored and Junio C Hamano committed Apr 16, 2006
1 parent 2935327 commit 402461a
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions pager.c
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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);
}

0 comments on commit 402461a

Please sign in to comment.