man: don't skip default path which appears in config file

If the MANPATH environment variable 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 path should not be skipped.

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@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Ron Yorston 2019-03-22 16:25:32 +00:00 committed by Denys Vlasenko
parent fe78c9a8b7
commit 3c6f3336e1

View File

@ -209,8 +209,12 @@ static char **add_MANPATH(char **man_path_list, int *count_mp, char *path)
/* Do we already have path? */ /* Do we already have path? */
path_element = man_path_list; path_element = man_path_list;
if (path_element) while (*path_element) { 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)
break;
goto skip; goto skip;
}
path_element++; path_element++;
} }
man_path_list = xrealloc_vector(man_path_list, 4, *count_mp); man_path_list = xrealloc_vector(man_path_list, 4, *count_mp);