On Wed, Jan 25, 2017 at 06:45:42PM +0100, Andreas Henriksson wrote: [...] > Another option might be to make the util-linux build system > detect full path of less during configure, then add code to > check if the file exists or bail out early at: > http://sources.debian.net/src/util-linux/2.29.1-1/lib/pager.c/#L59 [...]
A lazy version of that is attached (ie. no configure integration). Maybe we can sucker upstream into taking that patch (which should be a no-change normally but) to make it possible for us do: make CFLAGS="-DDEFAULT_SHELL_FULLPATH=/usr/bin/sensible-pager" Improvements welcome. Regards, Andreas Henriksson
diff --git a/lib/pager.c b/lib/pager.c index 114b3f7a7..4fe7970ce 100644 --- a/lib/pager.c +++ b/lib/pager.c @@ -170,6 +170,20 @@ static void wait_for_pager_signal(int signo) raise(signo); } +static char* get_default_pager(void) +{ +#ifdef DEFAULT_PAGER_FULLPATH +#define STRING(x) #x +#define STRING_OF(x) STRING(x) + if (access(STRING_OF(DEFAULT_PAGER_FULLPATH), F_OK) == 0) + return STRING_OF(DEFAULT_PAGER_FULLPATH); +#else + return "less"; +#endif + return NULL; +} + + static void __setup_pager(void) { const char *pager = getenv("PAGER"); @@ -178,9 +192,11 @@ static void __setup_pager(void) if (!isatty(STDOUT_FILENO)) return; - if (!pager) - pager = "less"; - else if (!*pager || !strcmp(pager, "cat")) + if (!pager) { + pager = get_default_pager(); + if (!pager) + return; + } else if (!*pager || !strcmp(pager, "cat")) return; /* spawn the pager */