=================================================================== RCS file: /cvs/mandoc/Attic/makewhatis.c,v retrieving revision 1.5 retrieving revision 1.7 diff -u -p -r1.5 -r1.7 --- mandoc/Attic/makewhatis.c 2011/06/21 13:54:05 1.5 +++ mandoc/Attic/makewhatis.c 2011/06/21 23:37:27 1.7 @@ -1,4 +1,4 @@ -/* $Id: makewhatis.c,v 1.5 2011/06/21 13:54:05 kristaps Exp $ */ +/* $Id: makewhatis.c,v 1.7 2011/06/21 23:37:27 kristaps Exp $ */ /* * Copyright (c) 2011 Kristaps Dzonsons * @@ -52,7 +52,7 @@ #define TYPE_STANDARD 0x20 #define TYPE_AUTHOR 0x40 #define TYPE_CONFIG 0x80 -#define TYPE__MAX TYPE_CONFIG +#define TYPE_DESC 0x100 /* Buffer for storing growable data. */ @@ -416,16 +416,17 @@ main(int argc, char *argv[]) seq = R_FIRST; while (0 == (ch = (*hash->seq)(hash, &key, &val, seq))) { + seq = R_NEXT; + memcpy(vbuf, val.data, sizeof(uint32_t)); val.size = sizeof(vbuf); val.data = vbuf; + dbt_put(db, fbbuf, &key, &val); - if ((*hash->del)(hash, &key, 0) < 0) { - perror("hash"); - exit((int)MANDOCLEVEL_SYSERR); - } - seq = R_NEXT; + ch = (*hash->del)(hash, &key, R_CURSOR); + if (ch < 0) + break; } if (ch < 0) { @@ -695,16 +696,25 @@ static void pmdoc_Nd(MDOC_ARGS) { int first; + size_t sz; for (first = 1, n = n->child; n; n = n->next) { if (MDOC_TEXT != n->type) continue; - if (first) - buf_appendb(dbuf, n->string, strlen(n->string) + 1); - else + + if (first) { + sz = strlen(n->string) + 1; + buf_appendb(dbuf, n->string, sz); + buf_appendb(buf, n->string, sz); + } else { buf_append(dbuf, n->string); + buf_append(buf, n->string); + } + first = 0; } + + hash_put(hash, buf, TYPE_DESC); } /* ARGSUSED */ @@ -737,11 +747,12 @@ hash_put(DB *db, const struct buf *buf, int mask) DBT key, val; int rc; - key.data = buf->cp; - - if ((key.size = buf->len) < 2) + if (buf->len < 2) return; + key.data = buf->cp; + key.size = buf->len; + if ((rc = (*db->get)(db, &key, &val, 0)) < 0) { perror("hash"); exit((int)MANDOCLEVEL_SYSERR); @@ -751,9 +762,6 @@ hash_put(DB *db, const struct buf *buf, int mask) val.data = &mask; val.size = sizeof(int); - /*fprintf(stderr, "Hashing: [%s] (0x%x)\n", - (char *)key.data, mask);*/ - if ((rc = (*db->put)(db, &key, &val, 0)) < 0) { perror("hash"); exit((int)MANDOCLEVEL_SYSERR); @@ -897,7 +905,9 @@ pman_node(MAN_ARGS) while (' ' == *start) start++; - buf_appendb(dbuf, start, strlen(start) + 1); + sz = strlen(start) + 1; + buf_appendb(dbuf, start, sz); + buf_appendb(buf, start, sz); } }