From 62244156bb39ecbe6aed09712ecc48fc86ac1435 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Wed, 13 Apr 2016 15:38:45 +0000 Subject: 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. --- cgi.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/cgi.c b/cgi.c index dae3b827..b4982d75 100644 --- a/cgi.c +++ b/cgi.c @@ -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("
"); 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) { -- cgit