On Tue, Apr 12, 2016 at 20:27 +0200, Ingo Schwarze wrote:
> 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.
>

Cool, but it begs the question why is 3p still on the "sections"
list in the fs_search?  Just a lookup optimization?

> > 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
>

I don't play games, so this is fine with me, however, given that
they're executables, just not located in /usr/bin, I'd still keep
them after .8.

> 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;

Reply via email to