man-db-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]