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;