diff options
author | 2014-11-11 19:03:10 +0000 | |
---|---|---|
committer | 2014-11-11 19:03:10 +0000 | |
commit | fea7191929ced045cd419e96009c5358a79228ed (patch) | |
tree | 052de0280a591275db15292b2a47efbc942fc685 | |
parent | Local APIC page doesn't need X permissions. (diff) | |
download | wireguard-openbsd-fea7191929ced045cd419e96009c5358a79228ed.tar.xz wireguard-openbsd-fea7191929ced045cd419e96009c5358a79228ed.zip |
In man(1) mode without -a, stop searching after the first manual tree
that contained at least one match in order to not prefer mdoc(1) from
ports over mdoc(7). As a bonus, this results in a speedup.
-rw-r--r-- | usr.bin/mandoc/cgi.c | 3 | ||||
-rw-r--r-- | usr.bin/mandoc/main.c | 6 | ||||
-rw-r--r-- | usr.bin/mandoc/mansearch.c | 10 | ||||
-rw-r--r-- | usr.bin/mandoc/mansearch.h | 3 |
4 files changed, 18 insertions, 4 deletions
diff --git a/usr.bin/mandoc/cgi.c b/usr.bin/mandoc/cgi.c index d3ac30f826f..979f570f460 100644 --- a/usr.bin/mandoc/cgi.c +++ b/usr.bin/mandoc/cgi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cgi.c,v 1.39 2014/10/28 17:35:42 schwarze Exp $ */ +/* $OpenBSD: cgi.c,v 1.40 2014/11/11 19:03:10 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2014 Ingo Schwarze <schwarze@usta.de> @@ -976,6 +976,7 @@ pg_search(const struct req *req) search.sec = req->q.sec; search.outkey = "Nd"; search.argmode = req->q.equal ? ARG_NAME : ARG_EXPR; + search.firstmatch = 1; paths.sz = 1; paths.paths = mandoc_malloc(sizeof(char *)); diff --git a/usr.bin/mandoc/main.c b/usr.bin/mandoc/main.c index 4c943cc04b1..bd9e3a74e0c 100644 --- a/usr.bin/mandoc/main.c +++ b/usr.bin/mandoc/main.c @@ -1,4 +1,4 @@ -/* $OpenBSD: main.c,v 1.106 2014/11/11 02:43:11 schwarze Exp $ */ +/* $OpenBSD: main.c,v 1.107 2014/11/11 19:03:10 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010, 2011, 2012, 2014 Ingo Schwarze <schwarze@openbsd.org> @@ -287,6 +287,10 @@ main(int argc, char *argv[]) if (argc == 0) usage(search.argmode); + if (search.argmode == ARG_NAME && + outmode == OUTMODE_ONE) + search.firstmatch = 1; + /* Access the mandoc database. */ manpath_parse(&paths, conf_file, defpaths, auxpaths); diff --git a/usr.bin/mandoc/mansearch.c b/usr.bin/mandoc/mansearch.c index 04964ab7b83..d5c8360c0d2 100644 --- a/usr.bin/mandoc/mansearch.c +++ b/usr.bin/mandoc/mansearch.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mansearch.c,v 1.35 2014/09/03 18:08:26 schwarze Exp $ */ +/* $OpenBSD: mansearch.c,v 1.36 2014/11/11 19:03:10 schwarze Exp $ */ /* * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2013, 2014 Ingo Schwarze <schwarze@openbsd.org> @@ -344,6 +344,14 @@ mansearch(const struct mansearch *search, sqlite3_finalize(s2); sqlite3_close(db); ohash_delete(&htab); + + /* + * In man(1) mode, prefer matches in earlier trees + * over matches in later trees. + */ + + if (cur && search->firstmatch) + break; } qsort(*res, cur, sizeof(struct manpage), manpage_compare); rc = 1; diff --git a/usr.bin/mandoc/mansearch.h b/usr.bin/mandoc/mansearch.h index fc8b46b7e1e..325193b0309 100644 --- a/usr.bin/mandoc/mansearch.h +++ b/usr.bin/mandoc/mansearch.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mansearch.h,v 1.14 2014/09/03 18:08:26 schwarze Exp $ */ +/* $OpenBSD: mansearch.h,v 1.15 2014/11/11 19:03:10 schwarze Exp $ */ /* * Copyright (c) 2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2013, 2014 Ingo Schwarze <schwarze@openbsd.org> @@ -94,6 +94,7 @@ struct mansearch { const char *sec; /* mansection/NULL */ const char *outkey; /* show content of this macro */ enum argmode argmode; /* interpretation of arguments */ + int firstmatch; /* first matching database only */ }; __BEGIN_DECLS |