[PATCH] man: don't overwrite default path which appears in config file
Ron Yorston
rmy at pobox.com
Fri Mar 22 11:04:57 UTC 2019
If MANPATH isn't set a provisional default path of /usr/man is placed
in man_path_list. This is only used if a configuration file doesn't
contain an alternative path.
If a configuration file lists the default path first:
MANPATH /usr/man:/usr/share/man
add_MANPATH() sees that the default entry is already present and skips
it. As a result man_path_list only contains the second and subsequent
components of the configured MANPATH.
In such cases the count needs to be incremented to prevent the default
path from being overwritten.
function old new delta
add_MANPATH 170 183 +13
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/0 up/down: 13/0) Total: 13 bytes
Signed-off-by: Ron Yorston <rmy at pobox.com>
---
miscutils/man.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/miscutils/man.c b/miscutils/man.c
index 01155c8f0..8680d4e78 100644
--- a/miscutils/man.c
+++ b/miscutils/man.c
@@ -209,12 +209,17 @@ static char **add_MANPATH(char **man_path_list, int *count_mp, char *path)
/* Do we already have path? */
path_element = man_path_list;
if (path_element) while (*path_element) {
- if (strcmp(*path_element, path) == 0)
+ if (strcmp(*path_element, path) == 0) {
+ /* Have path but haven't counted it, must be default */
+ if (*count_mp == 0)
+ goto count;
goto skip;
+ }
path_element++;
}
man_path_list = xrealloc_vector(man_path_list, 4, *count_mp);
man_path_list[*count_mp] = xstrdup(path);
+ count:
(*count_mp)++;
/* man_path_list is NULL terminated */
/* man_path_list[*count_mp] = NULL; - xrealloc_vector did it */
--
2.20.1
More information about the busybox
mailing list