aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2016-04-13 15:38:45 +0000
committerIngo Schwarze <schwarze@openbsd.org>2016-04-13 15:38:45 +0000
commitcd578b2231462a7721ddeb2fed36ff65e9c247d7 (patch)
treedc8437877fa35d93bca25439b72626926364a987
parentde191aa78ccca3e6d6c8e16eaa401311571088be (diff)
downloadmandoc-cd578b2231462a7721ddeb2fed36ff65e9c247d7.tar.gz
mandoc-cd578b2231462a7721ddeb2fed36ff65e9c247d7.tar.zst
mandoc-cd578b2231462a7721ddeb2fed36ff65e9c247d7.zip
Give manuals in purely numerical sections priority over manuals of
the same name in sections with an alphabetical suffix; same logic as in main.c rev. 1.264.
-rw-r--r--cgi.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/cgi.c b/cgi.c
index ffef5031..d90f493b 100644
--- 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) {