diff options
author | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2014-01-19 00:09:34 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2014-01-19 00:09:34 +0000 |
commit | beab98e096cab8ad7fc9e8ec42666d078c86555b (patch) | |
tree | f0b8f51820b4e3e87008c4de696ef4d32414bf02 /usr.bin/mandoc | |
parent | b2a305f7508496cd31d8a571d567c1be981f6eae (diff) |
Support a second -v on mandocdb(8) to show keys while they are being added;
i need that for debugging, in particular to be used with -t.
To be able to do so, provide a global table of key names, for reuse.
Diffstat (limited to 'usr.bin/mandoc')
-rw-r--r-- | usr.bin/mandoc/Makefile | 4 | ||||
-rw-r--r-- | usr.bin/mandoc/mandocdb.c | 19 | ||||
-rw-r--r-- | usr.bin/mandoc/mansearch_const.c | 31 |
3 files changed, 50 insertions, 4 deletions
diff --git a/usr.bin/mandoc/Makefile b/usr.bin/mandoc/Makefile index 2e2c62e8057..d7dbbc98c99 100644 --- a/usr.bin/mandoc/Makefile +++ b/usr.bin/mandoc/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.73 2014/01/02 17:05:02 miod Exp $ +# $OpenBSD: Makefile,v 1.74 2014/01/19 00:09:33 schwarze Exp $ .include <bsd.own.mk> @@ -15,7 +15,7 @@ SRCS+= main.c mdoc_term.c chars.c term.c tree.c man_term.c eqn_term.c SRCS+= mdoc_man.c SRCS+= html.c mdoc_html.c man_html.c out.c eqn_html.c SRCS+= term_ps.c term_ascii.c tbl_term.c tbl_html.c -SRCS+= manpath.c mandocdb.c mansearch.c apropos.c +SRCS+= manpath.c mandocdb.c mansearch_const.c mansearch.c apropos.c PROG= mandoc diff --git a/usr.bin/mandoc/mandocdb.c b/usr.bin/mandoc/mandocdb.c index e01202d9d38..0e9c8f98a17 100644 --- a/usr.bin/mandoc/mandocdb.c +++ b/usr.bin/mandoc/mandocdb.c @@ -1,4 +1,4 @@ -/* $Id: mandocdb.c,v 1.67 2014/01/18 08:54:20 schwarze Exp $ */ +/* $Id: mandocdb.c,v 1.68 2014/01/19 00:09:33 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org> @@ -40,6 +40,9 @@ #include "manpath.h" #include "mansearch.h" +extern int mansearch_keymax; +extern const char *const mansearch_keynames[]; + #define SQL_EXEC(_v) \ if (SQLITE_OK != sqlite3_exec(db, (_v), NULL, NULL, NULL)) \ fprintf(stderr, "%s\n", sqlite3_errmsg(db)) @@ -1554,12 +1557,24 @@ putkeys(const struct mpage *mpage, const char *cp, size_t sz, uint64_t v) { struct str *s; - unsigned int slot; const char *end; + uint64_t mask; + unsigned int slot; + int i; if (0 == sz) return; + if (verb > 1) { + for (i = 0, mask = 1; + i < mansearch_keymax; + i++, mask <<= 1) + if (mask & v) + break; + say(mpage->mlinks->file, "Adding key %s=%*s", + mansearch_keynames[i], sz, cp); + } + end = cp + sz; slot = ohash_qlookupi(&strings, cp, &end); s = ohash_find(&strings, slot); diff --git a/usr.bin/mandoc/mansearch_const.c b/usr.bin/mandoc/mansearch_const.c new file mode 100644 index 00000000000..f90c89609e5 --- /dev/null +++ b/usr.bin/mandoc/mansearch_const.c @@ -0,0 +1,31 @@ +/* $Id: mansearch_const.c,v 1.1 2014/01/19 00:09:33 schwarze Exp $ */ +/* + * Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#include <sys/types.h> +#include <stdint.h> + +#include "manpath.h" +#include "mansearch.h" + +const int mansearch_keymax = 40; + +const char *const mansearch_keynames[40] = { + "Nm", "Nd", "arch", "sec", "Xr", "Ar", "Fa", "Fl", + "Dv", "Fn", "Ic", "Pa", "Cm", "Li", "Em", "Cd", + "Va", "Ft", "Tn", "Er", "Ev", "Sy", "Sh", "In", + "Ss", "Ox", "An", "Mt", "St", "Bx", "At", "Nx", + "Fx", "Lk", "Ms", "Bsx", "Dx", "Rs", "Vt", "Lb" +}; |