diff options
| author | martin <martin@NetBSD.org> | 2022-03-13 09:52:20 +0000 |
|---|---|---|
| committer | martin <martin@NetBSD.org> | 2022-03-13 09:52:20 +0000 |
| commit | 4f5306f6945af898bc7eddaf4e61424e29aa0824 (patch) | |
| tree | 2ec7445cd630565286ca937c9c97f98cd95af75d /usr.bin | |
| parent | 91401fc6dd0a0cec5f1682cdd00356085ad2362e (diff) | |
Pull up following revision(s) (requested by gutteridge in ticket #1433):
usr.bin/man/man.c: revision 1.69
usr.bin/man/man.c: revision 1.70
usr.bin/man/man.c: revision 1.72
man.c: fix -m option so it works as documented
Refactoring work in man.c r. 1.40 from twelve years ago introduced a
regression where input from the -m option was appended rather than
prepended to the search paths. Problem reported by C. Chapman on
netbsd-users.
man: fix type mismatch between enum and int (since yesterday)
No binary change.
man: remove unused global variable 'instype' (since yesterday)
No functional change.
Diffstat (limited to 'usr.bin')
| -rw-r--r-- | usr.bin/man/man.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/usr.bin/man/man.c b/usr.bin/man/man.c index 4a525ff173b..62f546c2596 100644 --- a/usr.bin/man/man.c +++ b/usr.bin/man/man.c @@ -1,4 +1,4 @@ -/* $NetBSD: man.c,v 1.67.4.1 2020/04/09 11:28:32 martin Exp $ */ +/* $NetBSD: man.c,v 1.67.4.2 2022/03/13 09:52:20 martin Exp $ */ /* * Copyright (c) 1987, 1993, 1994, 1995 @@ -40,7 +40,7 @@ __COPYRIGHT("@(#) Copyright (c) 1987, 1993, 1994, 1995\ #if 0 static char sccsid[] = "@(#)man.c 8.17 (Berkeley) 1/31/95"; #else -__RCSID("$NetBSD: man.c,v 1.67.4.1 2020/04/09 11:28:32 martin Exp $"); +__RCSID("$NetBSD: man.c,v 1.67.4.2 2022/03/13 09:52:20 martin Exp $"); #endif #endif /* not lint */ @@ -69,6 +69,11 @@ __RCSID("$NetBSD: man.c,v 1.67.4.1 2020/04/09 11:28:32 martin Exp $"); #define MAN_DEBUG 0 /* debug path output */ #endif +enum inserttype { + INS_TAIL, + INS_HEAD +}; + /* * manstate: structure collecting the current global state so we can * easily identify it and pass it to helper functions in one arg. @@ -117,7 +122,8 @@ static void jump(char **, const char *, const char *) __dead; static int manual(char *, struct manstate *, glob_t *); static void onsig(int) __dead; static void usage(void) __dead; -static void addpath(struct manstate *, const char *, size_t, const char *); +static void addpath(struct manstate *, const char *, size_t, const char *, + enum inserttype); static const char *getclass(const char *); static void printmanpath(struct manstate *); @@ -327,7 +333,7 @@ main(int argc, char **argv) if (len < 1) continue; TAILQ_FOREACH(esubd, &m.subdirs->entrylist, q) - addpath(&m, p, len, esubd->s); + addpath(&m, p, len, esubd->s, INS_TAIL); } } else { @@ -335,12 +341,12 @@ main(int argc, char **argv) TAILQ_FOREACH(epath, &m.defaultpath->entrylist, q) { /* handle trailing "/" magic here ... */ if (abs_section && epath->s[epath->len - 1] != '/') { - addpath(&m, "", 1, epath->s); + addpath(&m, "", 1, epath->s, INS_TAIL); continue; } TAILQ_FOREACH(esubd, &m.subdirs->entrylist, q) - addpath(&m, epath->s, epath->len, esubd->s); + addpath(&m, epath->s, epath->len, esubd->s, INS_TAIL); } } @@ -358,7 +364,7 @@ main(int argc, char **argv) if (len < 1) continue; TAILQ_FOREACH(esubd, &m.subdirs->entrylist, q) - addpath(&m, p, len, esubd->s); + addpath(&m, p, len, esubd->s, INS_HEAD); /* Add to front */ } } @@ -1012,14 +1018,15 @@ getclass(const char *machine) } static void -addpath(struct manstate *m, const char *dir, size_t len, const char *sub) +addpath(struct manstate *m, const char *dir, size_t len, const char *sub, + enum inserttype ishead) { char buf[2 * MAXPATHLEN + 1]; (void)snprintf(buf, sizeof(buf), "%s%s%s{/%s,%s%s%s}", dir, (dir[len - 1] == '/') ? "" : "/", sub, m->machine, m->machclass ? "/" : "", m->machclass ? m->machclass : "", m->machclass ? "," : ""); - if (addentry(m->mymanpath, buf, 0) < 0) + if (addentry(m->mymanpath, buf, (int)ishead) < 0) errx(EXIT_FAILURE, "malloc failed"); } |
