diff options
-rw-r--r-- | TODO | 14 | ||||
-rw-r--r-- | main.c | 23 |
2 files changed, 18 insertions, 19 deletions
@@ -1,6 +1,6 @@ ************************************************************************ * Official mandoc TODO. -* $Id: TODO,v 1.292 2019/04/30 18:51:57 schwarze Exp $ +* $Id: TODO,v 1.293 2019/05/03 16:14:41 schwarze Exp $ ************************************************************************ Many issues are annotated for difficulty as follows: @@ -217,18 +217,6 @@ are mere guesses, and some may be wrong. --- missing misc features ---------------------------------------------- -- man 3am readline - does not work because man(1) only accepts digit + one letter, - otherwise explicit -s is currently required - https://github.com/void-linux/void-packages/issues/9868 - loc * exist * algo * size * imp *** - -- man 3 readline may show readline(3m) - because in manpage_compare, "3" and "3am" compare equal - https://github.com/void-linux/void-packages/issues/9868 - probably requires putting string version of section into struct manpage - loc * exist ** algo * size * imp *** - - dead .so links should be entered into the database to avoid: man -M. lvm-config man: outdated mandoc.db lacks lvm-config(8) entry, run makewhatis /co/void-man @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.324 2019/05/03 09:39:25 schwarze Exp $ */ +/* $Id: main.c,v 1.325 2019/05/03 16:14:42 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010-2012, 2014-2019 Ingo Schwarze <schwarze@openbsd.org> @@ -125,7 +125,7 @@ main(int argc, char *argv[]) char *conf_file, *defpaths, *auxpaths; char *oarg, *tagarg; unsigned char *uc; - size_t i, sz; + size_t i, sz, ssz; int prio, best_prio; enum outmode outmode; int fd, startdir; @@ -434,7 +434,7 @@ main(int argc, char *argv[]) if (outmode == OUTMODE_ONE) { argc = 1; - best_prio = 20; + best_prio = 40; } else if (outmode == OUTMODE_ALL) argc = (int)sz; @@ -453,10 +453,21 @@ main(int argc, char *argv[]) sec = res[i].file; sec += strcspn(sec, "123456789"); if (sec[0] == '\0') - continue; + continue; /* No section at all. */ prio = sec_prios[sec[0] - '1']; - if (sec[1] != '/') - prio += 10; + if (search.sec != NULL) { + ssz = strlen(search.sec); + if (strncmp(sec, search.sec, ssz) == 0) + sec += ssz; + } else + sec++; /* Prefer without suffix. */ + if (*sec != '/') + prio += 10; /* Wrong dir name. */ + if (search.sec != NULL && + (strlen(sec) <= ssz + 3 || + strcmp(sec + strlen(sec) - ssz, + search.sec) != 0)) + prio += 20; /* Wrong file ext. */ if (prio >= best_prio) continue; best_prio = prio; |