diff -rc man-db-2.5.1-orig/src/manp.c man-db-2.5.1/src/manp.c *** man-db-2.5.1-orig/src/manp.c 2008-01-07 03:23:11.000000000 +0100 --- man-db-2.5.1/src/manp.c 2008-02-07 14:20:20.000000000 +0100 *************** *** 96,102 **** static void mkcatdirs (const char *mandir, const char *catdir); static inline char *get_manpath_from_path (const char *path); ! static inline char *has_mandir (const char *p); static inline char *fsstnd (const char *path); static char *def_path (int flag); static void add_dir_to_list (char **lp, const char *dir); --- 96,102 ---- static void mkcatdirs (const char *mandir, const char *catdir); static inline char *get_manpath_from_path (const char *path); ! static inline char *has_mandir (const char *p, const char *mandir); static inline char *fsstnd (const char *path); static char *def_path (int flag); static void add_dir_to_list (char **lp, const char *dir); *************** *** 928,934 **** } else { debug ("is not in the config file\n"); ! t = has_mandir (p); if (t) { debug ("but does have a ../man or man " "subdirectory\n"); --- 928,934 ---- } else { debug ("is not in the config file\n"); ! t = has_mandir (p, "man"); if (t) { debug ("but does have a ../man or man " "subdirectory\n"); *************** *** 938,943 **** --- 938,952 ---- } else debug ("and doesn't have ../man or man " "subdirectories\n"); + + t = has_mandir (p, "share/man"); + if (t) { + debug ("but does have a ../share/man or share/man subdirectory\n"); + + add_dir_to_list (tmplist, t); + free (t); + } else + debug ("and doesn't have ../share/man or share/man subdirectories\n"); } } *************** *** 1013,1019 **** /* path does not exist in config file: check to see if path/../man or path/man exist. If so return it, if not return NULL. */ ! static inline char *has_mandir (const char *path) { char *newpath = NULL; --- 1022,1028 ---- /* path does not exist in config file: check to see if path/../man or path/man exist. If so return it, if not return NULL. */ ! static inline char *has_mandir (const char *path, const char *mandir) { char *newpath = NULL; *************** *** 1023,1031 **** char *subdir = strrchr (path, '/'); if (subdir) { const int prefix_len = subdir + 1 - path; ! newpath = xmalloc (prefix_len + sizeof ("man") + 1); strncpy (newpath, path, prefix_len); ! strcpy (newpath + prefix_len, "man"); if (is_directory (newpath) == 1) return newpath; --- 1032,1040 ---- char *subdir = strrchr (path, '/'); if (subdir) { const int prefix_len = subdir + 1 - path; ! newpath = xmalloc (prefix_len + strlen (mandir) + 2); strncpy (newpath, path, prefix_len); ! strcpy (newpath + prefix_len, mandir); if (is_directory (newpath) == 1) return newpath; *************** *** 1033,1039 **** *newpath = '\0'; } ! newpath = appendstr (newpath, path, "/man", NULL); if (is_directory (newpath) == 1) return newpath; --- 1042,1048 ---- *newpath = '\0'; } ! newpath = appendstr (newpath, path, "/", mandir, NULL); if (is_directory (newpath) == 1) return newpath;