aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--TODO14
-rw-r--r--main.c23
2 files changed, 18 insertions, 19 deletions
diff --git a/TODO b/TODO
index 677b5a8d..33eccde7 100644
--- a/TODO
+++ b/TODO
@@ -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
diff --git a/main.c b/main.c
index 339f7e8b..fbb7bf28 100644
--- a/main.c
+++ b/main.c
@@ -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;