summaryrefslogtreecommitdiffstats
path: root/mandocdb.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-01-19 00:09:38 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-01-19 00:09:38 +0000
commit6393b8aa8c51b1fee01ea7cab08064b7098255e5 (patch)
treeb0757ef27d78df38ae686f3a4b839158e5082287 /mandocdb.c
parent172a6f5a12e7614d3c52f6331657926b06a384cc (diff)
downloadmandoc-6393b8aa8c51b1fee01ea7cab08064b7098255e5.tar.gz
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 'mandocdb.c')
-rw-r--r--mandocdb.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/mandocdb.c b/mandocdb.c
index 641219c7..4fd5d548 100644
--- a/mandocdb.c
+++ b/mandocdb.c
@@ -48,6 +48,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))
@@ -1562,12 +1565,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);