summaryrefslogtreecommitdiff
path: root/usr.bin/mandoc
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2014-01-19 00:09:34 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2014-01-19 00:09:34 +0000
commitbeab98e096cab8ad7fc9e8ec42666d078c86555b (patch)
treef0b8f51820b4e3e87008c4de696ef4d32414bf02 /usr.bin/mandoc
parentb2a305f7508496cd31d8a571d567c1be981f6eae (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/Makefile4
-rw-r--r--usr.bin/mandoc/mandocdb.c19
-rw-r--r--usr.bin/mandoc/mansearch_const.c31
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"
+};