=================================================================== RCS file: /cvs/mandoc/cgi.c,v retrieving revision 1.119 retrieving revision 1.120 diff -u -p -r1.119 -r1.120 --- mandoc/cgi.c 2016/03/18 13:22:27 1.119 +++ mandoc/cgi.c 2016/04/13 15:38:45 1.120 @@ -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 * Copyright (c) 2014, 2015, 2016 Ingo Schwarze @@ -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, 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) {