diff options
author | Junio C Hamano <junkio@cox.net> | 2006-04-16 01:49:13 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-04-16 01:49:13 -0700 |
commit | e4284db2c56e9945514cf91e767f9267665074be (patch) | |
tree | 5db6728c9b5203de3a8cf9c941ea62eca76f4a3f | |
parent | Merge branch 'lt/logopt' into next (diff) | |
parent | Do not fork PAGER=cat (diff) | |
download | tgif-e4284db2c56e9945514cf91e767f9267665074be.tar.xz |
Merge branch 'jc/pager-cat' into next
* jc/pager-cat:
Do not fork PAGER=cat
pager: do not fork a pager if PAGER is set to empty.
-rw-r--r-- | pager.c | 17 |
1 files changed, 10 insertions, 7 deletions
@@ -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 || !strcmp(pager, "cat")) + 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); } |