Hi Mike, Mike Belopuhov wrote on Tue, Apr 12, 2016 at 08:01:23PM +0200:
> IMO it's a very bad idea to hardcode "3p/" like that. > Aren't there packages using other funny section names? Packages are in a different manual tree /usr/local/man/, which gets lower priority than /usr/share/man/ in the first place. But you are right, my first version of the patch left /usr/local/man/man3f/ with the same priority as /usr/local/man/man3/, for example. Besides, on non-OpenBSD systems, this may matter even in the base system. > Can we simply prioritize letter-less sections? That's a neat idea! Patch updated, see below, forget about the first version. > I'd definitely move 4 and 5 closer like so (if you want to keep > games this high): > {"1", "8", "6", "5", "7", "4", "2", "3", "9", "3p"}; > .7 man pages are closer to config files (.5) and other "sysop" > stuff. I wouldn't mind changing the order, even though the old one is traditional; i think this would make most sense: 1 user stuff 8 5 7 4 admin stuff 2 3 9 developer stuff 6 slacker stuff But maybe let's first decide about section suffixes before re-prioritizing section numbers, which is a different topic. Yours, Ingo Index: main.c =================================================================== RCS file: /cvs/src/usr.bin/mandoc/main.c,v retrieving revision 1.170 diff -u -p -r1.170 main.c --- main.c 16 Jan 2016 21:56:32 -0000 1.170 +++ main.c 12 Apr 2016 18:09:30 -0000 @@ -112,9 +112,9 @@ main(int argc, char *argv[]) unsigned char *uc; struct manpage *res, *resp; char *conf_file, *defpaths; - size_t isec, i, sz; + const char *sec; + size_t i, sz; int prio, best_prio; - char sec; enum outmode outmode; int fd; int show_usage; @@ -350,7 +350,7 @@ main(int argc, char *argv[]) if (outmode == OUTMODE_ONE) { argc = 1; - best_prio = 10; + best_prio = 20; } else if (outmode == OUTMODE_ALL) argc = (int)sz; @@ -366,11 +366,13 @@ main(int argc, char *argv[]) res[i].output); else if (outmode == OUTMODE_ONE) { /* Search for the best section. */ - isec = strcspn(res[i].file, "123456789"); - sec = res[i].file[isec]; - if ('\0' == sec) + sec = res[i].file; + sec += strcspn(sec, "123456789"); + if (sec[0] == '\0') continue; - prio = sec_prios[sec - '1']; + prio = sec_prios[sec[0] - '1']; + if (sec[1] != '/') + prio += 10; if (prio >= best_prio) continue; best_prio = prio; @@ -636,7 +638,7 @@ fs_search(const struct mansearch *cfg, c int argc, char **argv, struct manpage **res, size_t *ressz) { const char *const sections[] = - {"1", "8", "6", "2", "3", "3p", "5", "7", "4", "9"}; + {"1", "8", "6", "2", "3", "5", "7", "4", "9", "3p"}; const size_t nsec = sizeof(sections)/sizeof(sections[0]); size_t ipath, isec, lastsz;