occtl: allow empty pager to be specified on compile time

This commit is contained in:
Nikos Mavrogiannopoulos
2015-10-28 12:56:27 +01:00
parent c1e66c181f
commit cfd224c9c8
2 changed files with 18 additions and 7 deletions

View File

@@ -316,10 +316,14 @@ if [ test "$anyconnect_enabled" = "yes" ];then
AC_DEFINE([ANYCONNECT_CLIENT_COMPAT], [], [Enable Anyconnect compatibility]) AC_DEFINE([ANYCONNECT_CLIENT_COMPAT], [], [Enable Anyconnect compatibility])
fi fi
pager_set=0
AC_ARG_WITH(pager, AC_ARG_WITH(pager,
AS_HELP_STRING([--with-pager=PAGER], [set a specific pager for occtl]), AS_HELP_STRING([--with-pager=PAGER], [set a specific pager for occtl; use "" for no pager]),
occtl_pager=$withval) occtl_pager=$withval
if [ test -z "$occtl_pager" ];then pager_set=1
)
if [ test $pager_set = 0 ];then
AC_DEFINE_UNQUOTED([OCCTL_PAGER], ["less"], [The default pager for occtl]) AC_DEFINE_UNQUOTED([OCCTL_PAGER], ["less"], [The default pager for occtl])
else else
AC_DEFINE_UNQUOTED([OCCTL_PAGER], ["$occtl_pager"], [The default pager for occtl]) AC_DEFINE_UNQUOTED([OCCTL_PAGER], ["$occtl_pager"], [The default pager for occtl])

View File

@@ -28,7 +28,8 @@
static const char* get_pager(void) static const char* get_pager(void)
{ {
char* pager; char* pager;
pager = getenv("OCCTL_PAGER"); pager = getenv("OCCTL_PAGER");
if (pager == NULL) if (pager == NULL)
pager = getenv("PAGER"); pager = getenv("PAGER");
@@ -41,7 +42,8 @@ char* pager;
/* Always succeeds */ /* Always succeeds */
FILE* pager_start(cmd_params_st *params) FILE* pager_start(cmd_params_st *params)
{ {
FILE *fp; FILE *fp;
const char *pager;
if (params && params->no_pager != 0) if (params && params->no_pager != 0)
return stdout; return stdout;
@@ -51,10 +53,15 @@ FILE *fp;
return stdout; return stdout;
#endif #endif
pager = get_pager();
if (pager == NULL || pager[0] == 0)
return stdout;
if (!getenv("LESS")) { if (!getenv("LESS")) {
setenv("LESS", "FRSX", 1); setenv("LESS", "FRSX", 1);
} }
fp = popen(get_pager(), "w");
fp = popen(pager, "w");
if (fp == NULL) { /* no pager */ if (fp == NULL) { /* no pager */
fprintf(stderr, "unable to start pager; check your $PAGER environment variable\n"); fprintf(stderr, "unable to start pager; check your $PAGER environment variable\n");