aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mandocdb.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-12-16 12:06:35 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-12-16 12:06:35 +0000
commit1cf41474327ca813976f622e8e0b73bb3841a44c (patch)
treefc81fa3b092a418c199ec9ce185c91c9be1a38bd /mandocdb.c
parent385adb0d5fa1bc2a7c177241fa3d9671d7af1582 (diff)
downloadmandoc-1cf41474327ca813976f622e8e0b73bb3841a44c.tar.gz
mandoc-1cf41474327ca813976f622e8e0b73bb3841a44c.tar.zst
mandoc-1cf41474327ca813976f622e8e0b73bb3841a44c.zip
Make the stored "cat"/"mdoc"/"man" strings just be c/d/a single-character
bytes. This cuts down a little in index size and allows for cleaner extraction of information.
Diffstat (limited to 'mandocdb.c')
-rw-r--r--mandocdb.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/mandocdb.c b/mandocdb.c
index d9acf3e8..24758a0e 100644
--- a/mandocdb.c
+++ b/mandocdb.c
@@ -1,4 +1,4 @@
-/* $Id: mandocdb.c,v 1.35 2011/12/16 08:04:34 kristaps Exp $ */
+/* $Id: mandocdb.c,v 1.36 2011/12/16 12:06:35 kristaps Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -528,6 +528,7 @@ index_merge(const struct of *of, struct mparse *mp,
size_t sv;
unsigned seq;
struct db_val vbuf;
+ char type;
for (rec = 0; of; of = of->next) {
fn = of->fname;
@@ -608,7 +609,8 @@ index_merge(const struct of *of, struct mparse *mp,
*/
dbuf->len = 0;
- buf_append(dbuf, mdoc ? "mdoc" : (man ? "man" : "cat"));
+ type = mdoc ? 'd' : (man ? 'a' : 'c');
+ buf_appendb(dbuf, &type, 1);
buf_appendb(dbuf, fn, strlen(fn) + 1);
buf_appendb(dbuf, msec, strlen(msec) + 1);
buf_appendb(dbuf, mtitle, strlen(mtitle) + 1);
@@ -696,7 +698,7 @@ index_prune(const struct of *ofile, DB *db, const char *dbf,
recno_t **recs, size_t *recsz, size_t *reccur)
{
const struct of *of;
- const char *fn, *cp;
+ const char *fn;
struct db_val *vbuf;
unsigned seq, sseq;
DBT key, val;
@@ -707,7 +709,6 @@ index_prune(const struct of *ofile, DB *db, const char *dbf,
while (0 == (ch = (*idx->seq)(idx, &key, &val, seq))) {
seq = R_NEXT;
*maxrec = *(recno_t *)key.data;
- cp = val.data;
/* Deleted records are zero-sized. Skip them. */
@@ -721,11 +722,8 @@ index_prune(const struct of *ofile, DB *db, const char *dbf,
* Failing any of these, we go into our error handler.
*/
- if (NULL == (fn = memchr(cp, '\0', val.size)))
- break;
- if (++fn - cp >= (int)val.size)
- break;
- if (NULL == memchr(fn, '\0', val.size - (fn - cp)))
+ fn = (char *)val.data + 1;
+ if (NULL == memchr(fn, '\0', val.size - 1))
break;
/*