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;
