diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-01-19 00:09:38 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-01-19 00:09:38 +0000 |
commit | 6393b8aa8c51b1fee01ea7cab08064b7098255e5 (patch) | |
tree | b0757ef27d78df38ae686f3a4b839158e5082287 /mandocdb.c | |
parent | 172a6f5a12e7614d3c52f6331657926b06a384cc (diff) | |
download | mandoc-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.c | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -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); |