[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Man-db-devel] [PATCH] Fix --with-override-dir handling
From: |
Mihail Konev |
Subject: |
[Man-db-devel] [PATCH] Fix --with-override-dir handling |
Date: |
Mon, 19 Dec 2016 00:33:31 +0500 |
(Might or might not be correct).
Reported-by: Nikola Forró <address@hidden>
---
src/manp.c | 47 ++++++++++++++++++-----------------------------
1 file changed, 18 insertions(+), 29 deletions(-)
diff --git a/src/manp.c b/src/manp.c
index a224992cf2ae..ecf5d026a330 100644
--- a/src/manp.c
+++ b/src/manp.c
@@ -931,23 +931,6 @@ static char *def_path (int flag)
}
/*
- * If specified with configure, append OVERRIDE_DIR to dir param and add it
- * to the lp list.
- */
-static void insert_override_dir (char **lp, const char *dir)
-{
- char *override_dir = NULL;
-
- if (!strlen (OVERRIDE_DIR))
- return;
-
- if ((override_dir = xasprintf ("%s/%s", dir, OVERRIDE_DIR))) {
- add_dir_to_list (lp, override_dir);
- free (override_dir);
- }
-}
-
-/*
* For each directory in the user's path, see if it is one of the
* directories listed in the man_db.config file. If so, and it is
* not already in the manpath, add it. If the directory is not listed
@@ -994,8 +977,6 @@ char *get_manpath_from_path (const char *path, int
mandatory)
if (mandir_list) {
debug ("is in the config file\n");
while (mandir_list) {
- insert_override_dir (tmplist,
- mandir_list->cont);
add_dir_to_list (tmplist, mandir_list->cont);
mandir_list = iterate_over_list
(mandir_list, p, MANPATH_MAP);
@@ -1014,7 +995,6 @@ char *get_manpath_from_path (const char *path, int
mandatory)
"../share/man, or share/man "
"subdirectory\n");
- insert_override_dir (tmplist, t);
add_dir_to_list (tmplist, t);
free (t);
} else
@@ -1031,7 +1011,6 @@ char *get_manpath_from_path (const char *path, int
mandatory)
for (list = namestore; list; list = list->next)
if (list->flag == MANDATORY) {
- insert_override_dir (tmplist, list->key);
add_dir_to_list (tmplist, list->key);
}
}
@@ -1201,18 +1180,28 @@ void create_pathlist (const char *manp, char **mp)
const char *p, *end;
char **mphead = mp;
- /* Expand the manpath into a list for easier handling. */
+ /* Expand the manpath into a list for easier handling.
+ * For each entry, add corresponding OVERRIDE_DIR.
+ * */
for (p = manp;; p = end + 1) {
+ char *element, *element_override;
+ ssize_t p_len;
+
end = strchr (p, ':');
- if (end) {
- char *element = xstrndup (p, end - p);
- mp = add_dir_to_path_list (mphead, mp, element);
- free (element);
- } else {
- mp = add_dir_to_path_list (mphead, mp, p);
+ p_len = end ? end - p : (ssize_t)strlen(p);
+
+ element = xstrndup (p, p_len);
+ element_override = xasprintf("%s/%s", element, OVERRIDE_DIR);
+
+ mp = add_dir_to_path_list (mphead, mp, element_override);
+ mp = add_dir_to_path_list (mphead, mp, element);
+
+ free (element);
+ free (element_override);
+
+ if (!end)
break;
- }
}
*mp = NULL;
--
2.9.2