aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/man.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/miscutils/man.c b/miscutils/man.c
index e6824ebc8..26fd44ddf 100644
--- a/miscutils/man.c
+++ b/miscutils/man.c
@@ -169,10 +169,10 @@ int man_main(int argc UNUSED_PARAM, char **argv)
sec_list = xstrdup("1:2:3:4:5:6:7:8:9");
/* Last valid man_path_list[] is [0x10] */
man_path_list = xzalloc(0x11 * sizeof(man_path_list[0]));
- count_mp = 0;
- man_path_list[0] = xstrdup(getenv("MANPATH"));
- if (man_path_list[0])
- count_mp++;
+ man_path_list[0] = getenv("MANPATH");
+ if (!man_path_list[0])
+ man_path_list[0] = (char*)"/usr/man";
+ count_mp = 1;
pager = getenv("MANPAGER");
if (!pager) {
pager = getenv("PAGER");
@@ -186,6 +186,13 @@ int man_main(int argc UNUSED_PARAM, char **argv)
if (!token[1])
continue;
if (strcmp("MANPATH", token[0]) == 0) {
+ /* Do we already have it? */
+ char **path_element = man_path_list;
+ while (*path_element) {
+ if (strcmp(*path_element, token[1]) == 0)
+ goto skip;
+ path_element++;
+ }
man_path_list = xrealloc_vector(man_path_list, 4, count_mp);
man_path_list[count_mp] = xstrdup(token[1]);
count_mp++;
@@ -196,6 +203,7 @@ int man_main(int argc UNUSED_PARAM, char **argv)
free(sec_list);
sec_list = xstrdup(token[1]);
}
+ skip: ;
}
config_close(parser);