aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Spencer <maillist-busybox@barfooze.de>2014-01-22 15:31:10 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2014-01-22 15:31:10 +0100
commitff6506131152ee383685047c19bc420ed4de030e (patch)
treef872068afcac7358bd3ecc9130b03d9496cdf0c5
parent731f59617582d24ea5bd613e2a5448fd4027a3aa (diff)
downloadbusybox-w32-ff6506131152ee383685047c19bc420ed4de030e.tar.gz
busybox-w32-ff6506131152ee383685047c19bc420ed4de030e.tar.bz2
busybox-w32-ff6506131152ee383685047c19bc420ed4de030e.zip
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.c22
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;
150int man_main(int argc UNUSED_PARAM, char **argv) 150int man_main(int argc UNUSED_PARAM, char **argv)
151{ 151{
152 parser_t *parser; 152 parser_t *parser;
153 const char *pager; 153 const char *pager = ENABLE_LESS ? "less" : "more";
154 char **man_path_list; 154 char **man_path_list;
155 char *sec_list; 155 char *sec_list;
156 char *cur_path, *cur_sect; 156 char *cur_path, *cur_sect;
@@ -171,12 +171,6 @@ int man_main(int argc UNUSED_PARAM, char **argv)
171 man_path_list[0] = (char*)"/usr/man"; 171 man_path_list[0] = (char*)"/usr/man";
172 else 172 else
173 count_mp++; 173 count_mp++;
174 pager = getenv("MANPAGER");
175 if (!pager) {
176 pager = getenv("PAGER");
177 if (!pager)
178 pager = "more";
179 }
180 174
181 /* Parse man.conf[ig] or man_db.conf */ 175 /* Parse man.conf[ig] or man_db.conf */
182 /* man version 1.6f uses man.config */ 176 /* man version 1.6f uses man.config */
@@ -190,6 +184,11 @@ int man_main(int argc UNUSED_PARAM, char **argv)
190 while (config_read(parser, token, 2, 0, "# \t", PARSE_NORMAL)) { 184 while (config_read(parser, token, 2, 0, "# \t", PARSE_NORMAL)) {
191 if (!token[1]) 185 if (!token[1])
192 continue; 186 continue;
187 if (strcmp("DEFINE", token[0]) == 0) {
188 if (strncmp("pager", token[1], 5) == 0) {
189 pager = xstrdup(skip_whitespace(token[1]) + 5);
190 }
191 } else
193 if (strcmp("MANDATORY_MANPATH"+10, token[0]) == 0 /* "MANPATH"? */ 192 if (strcmp("MANDATORY_MANPATH"+10, token[0]) == 0 /* "MANPATH"? */
194 || strcmp("MANDATORY_MANPATH", token[0]) == 0 193 || strcmp("MANDATORY_MANPATH", token[0]) == 0
195 ) { 194 ) {
@@ -230,6 +229,15 @@ int man_main(int argc UNUSED_PARAM, char **argv)
230 } 229 }
231 config_close(parser); 230 config_close(parser);
232 231
232 {
233 /* environment overrides setting from man.config */
234 char *env_pager = getenv("MANPAGER");
235 if (!env_pager)
236 env_pager = getenv("PAGER");
237 if (env_pager)
238 pager = env_pager;
239 }
240
233 not_found = 0; 241 not_found = 0;
234 do { /* for each argv[] */ 242 do { /* for each argv[] */
235 int found = 0; 243 int found = 0;