diff options
author | John Spencer <maillist-busybox@barfooze.de> | 2014-01-22 15:31:10 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2014-01-22 15:31:10 +0100 |
commit | ff6506131152ee383685047c19bc420ed4de030e (patch) | |
tree | f872068afcac7358bd3ecc9130b03d9496cdf0c5 | |
parent | 731f59617582d24ea5bd613e2a5448fd4027a3aa (diff) | |
download | busybox-ff6506131152ee383685047c19bc420ed4de030e.tar.gz |
man: parse "DEFINE pager" in config
function old new delta
man_main 789 844 +55
Signed-off-by: John Spencer <maillist-busybox@barfooze.de>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | miscutils/man.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/miscutils/man.c b/miscutils/man.c index d3e832bd7..51baceb16 100644 --- a/miscutils/man.c +++ b/miscutils/man.c @@ -150,7 +150,7 @@ int man_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int man_main(int argc UNUSED_PARAM, char **argv) { parser_t *parser; - const char *pager; + const char *pager = ENABLE_LESS ? "less" : "more"; char **man_path_list; char *sec_list; char *cur_path, *cur_sect; @@ -171,12 +171,6 @@ int man_main(int argc UNUSED_PARAM, char **argv) man_path_list[0] = (char*)"/usr/man"; else count_mp++; - pager = getenv("MANPAGER"); - if (!pager) { - pager = getenv("PAGER"); - if (!pager) - pager = "more"; - } /* Parse man.conf[ig] or man_db.conf */ /* man version 1.6f uses man.config */ @@ -190,6 +184,11 @@ int man_main(int argc UNUSED_PARAM, char **argv) while (config_read(parser, token, 2, 0, "# \t", PARSE_NORMAL)) { if (!token[1]) continue; + if (strcmp("DEFINE", token[0]) == 0) { + if (strncmp("pager", token[1], 5) == 0) { + pager = xstrdup(skip_whitespace(token[1]) + 5); + } + } else if (strcmp("MANDATORY_MANPATH"+10, token[0]) == 0 /* "MANPATH"? */ || strcmp("MANDATORY_MANPATH", token[0]) == 0 ) { @@ -230,6 +229,15 @@ int man_main(int argc UNUSED_PARAM, char **argv) } config_close(parser); + { + /* environment overrides setting from man.config */ + char *env_pager = getenv("MANPAGER"); + if (!env_pager) + env_pager = getenv("PAGER"); + if (env_pager) + pager = env_pager; + } + not_found = 0; do { /* for each argv[] */ int found = 0; |