]> git.cameronkatri.com Git - mandoc.git/commitdiff
Give manuals in purely numerical sections priority over manuals of
authorIngo Schwarze <schwarze@openbsd.org>
Wed, 13 Apr 2016 15:38:45 +0000 (15:38 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Wed, 13 Apr 2016 15:38:45 +0000 (15:38 +0000)
the same name in sections with an alphabetical suffix; same logic
as in main.c rev. 1.264.

cgi.c

diff --git a/cgi.c b/cgi.c
index ffef5031a10cbefc76a3f2ba764a7f12206932c7..d90f493b8bf11ede7f0c4945b6d74779f2d67265 100644 (file)
--- a/cgi.c
+++ b/cgi.c
@@ -1,4 +1,4 @@
-/*     $Id: cgi.c,v 1.119 2016/03/18 13:22:27 schwarze Exp $ */
+/*     $Id: cgi.c,v 1.120 2016/04/13 15:38:45 schwarze Exp $ */
 /*
  * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014, 2015, 2016 Ingo Schwarze <schwarze@usta.de>
@@ -554,10 +554,10 @@ static void
 pg_searchres(const struct req *req, struct manpage *r, size_t sz)
 {
        char            *arch, *archend;
-       size_t           i, iuse, isec;
+       const char      *sec;
+       size_t           i, iuse;
        int              archprio, archpriouse;
        int              prio, priouse;
-       char             sec;
 
        for (i = 0; i < sz; i++) {
                if (validate_filename(r[i].file))
@@ -616,20 +616,22 @@ pg_searchres(const struct req *req, struct manpage *r, size_t sz)
        if (req->q.equal) {
                puts("<HR>");
                iuse = 0;
-               priouse = 10;
+               priouse = 20;
                archpriouse = 3;
                for (i = 0; i < sz; i++) {
-                       isec = strcspn(r[i].file, "123456789");
-                       sec = r[i].file[isec];
-                       if ('\0' == sec)
+                       sec = r[i].file;
+                       sec += strcspn(sec, "123456789");
+                       if (sec[0] == '\0')
                                continue;
-                       prio = sec_prios[sec - '1'];
-                       if (NULL == req->q.arch) {
+                       prio = sec_prios[sec[0] - '1'];
+                       if (sec[1] != '/')
+                               prio += 10;
+                       if (req->q.arch == NULL) {
                                archprio =
-                                   (NULL == (arch = strchr(
-                                       r[i].file + isec, '/'))) ? 3 :
-                                   (NULL == (archend = strchr(
-                                       arch + 1, '/'))) ? 0 :
+                                   ((arch = strchr(sec + 1, '/'))
+                                       == NULL) ? 3 :
+                                   ((archend = strchr(arch + 1, '/'))
+                                       == NULL) ? 0 :
                                    strncmp(arch, "amd64/",
                                        archend - arch) ? 2 : 1;
                                if (archprio < archpriouse) {