path: root/pager.c
diff options
authorJeff King <>2013-09-03 07:41:50 (GMT)
committerJunio C Hamano <>2013-09-03 17:36:12 (GMT)
commited016612e6956496d5028e41f6414be29c09be4e (patch)
tree0ef7153a127500788f7b59ac0fd8d56358523063 /pager.c
parente230c568c4b9a991e3175e5f65171a566fd8e39c (diff)
pager: turn on "cat" optimization for DEFAULT_PAGER
If the user specifies a pager of "cat" (or the empty string), whether it is in the environment or from config, we automagically optimize it out to mean "no pager" and avoid forking at all. We treat an empty pager variable similary. However, we did not apply this optimization when DEFAULT_PAGER was set to "cat" (or the empty string). There is no reason to treat DEFAULT_PAGER any differently. The optimization should not be user-visible (unless the user has a bizarre "cat" in their PATH). And even if it is, we are better off behaving consistently between the compile-time default and the environment and config settings. The stray "else" we are removing from this code was introduced by 402461a (pager: do not fork a pager if PAGER is set to empty., 2006-04-16). At that time, the line directly above used: if (!pager) pager = "less"; as a fallback, meaning that it could not possibly trigger the optimization. Later, a3d023d (Provide a build time default-pager setting, 2009-10-30) turned that constant into a build-time setting which could be anything, but didn't loosen the "else" to let DEFAULT_PAGER use the optimization. Noticed-by: Dale R. Worley <> Suggested-by: Matthieu Moy <> Signed-off-by: Jeff King <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'pager.c')
1 files changed, 1 insertions, 1 deletions
diff --git a/pager.c b/pager.c
index c1ecf65..fa19765 100644
--- a/pager.c
+++ b/pager.c
@@ -54,7 +54,7 @@ const char *git_pager(int stdout_is_tty)
pager = getenv("PAGER");
if (!pager)
- else if (!*pager || !strcmp(pager, "cat"))
+ if (!*pager || !strcmp(pager, "cat"))
pager = NULL;
return pager;