diff -rc man-1.6f-orig/src/manpath.c man-1.6f/src/manpath.c *** man-1.6f-orig/src/manpath.c 2006-08-03 23:18:33.000000000 +0200 --- man-1.6f/src/manpath.c 2008-02-07 15:31:43.000000000 +0100 *************** *** 109,121 **** * or ../man or ../man1 or ../man8 subdirectories. */ static char * ! find_man_subdir (char *p) { int len; char *t, *sp; len = strlen (p); ! t = my_malloc ((unsigned) len + 20); memcpy (t, p, len); strcpy (t + len, "/man"); --- 109,121 ---- * or ../man or ../man1 or ../man8 subdirectories. */ static char * ! find_man_subdir (char *p, char * maybe_share) { int len; char *t, *sp; len = strlen (p); ! t = my_malloc ((unsigned) len + 30); memcpy (t, p, len); strcpy (t + len, "/man"); *************** *** 139,159 **** } /* look for the situation with packagedir/bin and packagedir/man */ ! strcpy (t + len, "/man"); if (is_directory (t) == 1) return t; /* look for the situation with pkg/bin and pkg/man1 or pkg/man8 */ /* (looking for all man[1-9] would probably be a waste of stats) */ ! strcpy (t + len, "/man1"); if (is_directory (t) == 1) { t[len] = 0; return t; } ! strcpy (t + len, "/man8"); if (is_directory (t) == 1) { t[len] = 0; --- 139,159 ---- } /* look for the situation with packagedir/bin and packagedir/man */ ! sprintf (t + len, "%s/man", maybe_share); if (is_directory (t) == 1) return t; /* look for the situation with pkg/bin and pkg/man1 or pkg/man8 */ /* (looking for all man[1-9] would probably be a waste of stats) */ ! sprintf (t + len, "%s/man1", maybe_share); if (is_directory (t) == 1) { t[len] = 0; return t; } ! sprintf (t + len, "%s/man8", maybe_share); if (is_directory (t) == 1) { t[len] = 0; *************** *** 341,347 **** if (debug) gripe (IS_NOT_IN_CONFIG); ! t = find_man_subdir (dir); if (t != NULL) { if (debug) gripe (MAN_NEARBY); --- 341,347 ---- if (debug) gripe (IS_NOT_IN_CONFIG); ! t = find_man_subdir (dir, ""); if (t != NULL) { if (debug) gripe (MAN_NEARBY); *************** *** 352,357 **** --- 352,370 ---- if (debug) gripe (NO_MAN_NEARBY); } + + t = find_man_subdir (dir, "/share"); + if (t != NULL) { + if (debug) + gripe (MAN_NEARBY); + + add_to_mandirlist (t, perrs); + free (t); + } else { + if (debug) + gripe (NO_MAN_NEARBY); + } + } }