summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--TODO12
-rw-r--r--main.c21
2 files changed, 16 insertions, 17 deletions
diff --git a/TODO b/TODO
index b45986eb..cdf256e1 100644
--- a/TODO
+++ b/TODO
@@ -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 940662e4..c2057e60 100644
--- a/main.c
+++ b/main.c
@@ -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;