civodul pushed a commit to tag 1.8
in repository guix.
commit c56bfbe863322fe9d5d5748681ebcc0de7780c02
Author: Eelco Dolstra <[email protected]>
Date: Wed Dec 10 18:16:05 2014 +0100
Provide default pagers
Borrowed from systemd.
---
src/libmain/shared.cc | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 1d50346..8d06455 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -291,8 +291,9 @@ int handleExceptions(const string & programName,
std::function<void()> fun)
RunPager::RunPager()
{
- string pager = getEnv("PAGER");
- if (!isatty(STDOUT_FILENO) || pager.empty()) return;
+ if (!isatty(STDOUT_FILENO)) return;
+ string pager = getEnv("PAGER", "default");
+ if (pager == "" || pager == "cat") return;
/* Ignore SIGINT. The pager will handle it (and we'll get
SIGPIPE). */
@@ -312,7 +313,11 @@ RunPager::RunPager()
throw SysError("dupping stdin");
if (!getenv("LESS"))
setenv("LESS", "FRSXMK", 1);
- execl("/bin/sh", "sh", "-c", pager.c_str(), NULL);
+ if (pager != "default")
+ execl("/bin/sh", "sh", "-c", pager.c_str(), NULL);
+ execlp("pager", "pager", NULL);
+ execlp("less", "less", NULL);
+ execlp("more", "more", NULL);
throw SysError(format("executing ‘%1%’") % pager);
});