diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-04-04 02:31:07 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-04-04 02:31:07 +0000 |
commit | a8e5fb431fbaa6765f1d182b1206f26724239e4f (patch) | |
tree | 607524399d54375e94006b96b1b8dfbd2de5a352 /mandocdb.c | |
parent | 2ec6816f1cda38fe01c3503f57dd7fd1132045c1 (diff) | |
download | mandoc-a8e5fb431fbaa6765f1d182b1206f26724239e4f.tar.gz |
When the -n or -t flag is given to makewhatis(8),
write names and decriptions to stdout,
in a format similar to apropos(1) output.
Inspired by espie@'s makewhatis.
Diffstat (limited to 'mandocdb.c')
-rw-r--r-- | mandocdb.c | 44 |
1 files changed, 39 insertions, 5 deletions
@@ -1858,11 +1858,43 @@ dbadd(struct mpage *mpage, struct mchars *mc) size_t i; unsigned int slot; - if (debug) - say(mpage->mlinks->file, "Adding to database"); - - if (nodb) + mlink = mpage->mlinks; + + if (nodb) { + while (NULL != mlink) { + fputs(mlink->name, stdout); + if (NULL == mlink->next || + strcmp(mlink->dsec, mlink->next->dsec) || + strcmp(mlink->fsec, mlink->next->fsec) || + strcmp(mlink->arch, mlink->next->arch)) { + putchar('('); + if ('\0' == *mlink->dsec) + fputs(mlink->fsec, stdout); + else + fputs(mlink->dsec, stdout); + if ('\0' != *mlink->arch) + printf("/%s", mlink->arch); + putchar(')'); + } + mlink = mlink->next; + if (NULL != mlink) + fputs(", ", stdout); + } + for (key = ohash_first(&strings, &slot); NULL != key; + key = ohash_next(&strings, &slot)) { + if (TYPE_Nd & key->mask) { + if (NULL == key->rendered) + render_key(mc, key); + printf(" - %s", key->rendered); + break; + } + } + putchar('\n'); return; + } + + if (debug) + say(mlink->file, "Adding to database"); i = 1; SQL_BIND_INT(stmts[STMT_INSERT_PAGE], i, FORM_SRC == mpage->form); @@ -1870,8 +1902,10 @@ dbadd(struct mpage *mpage, struct mchars *mc) mpage->recno = sqlite3_last_insert_rowid(db); sqlite3_reset(stmts[STMT_INSERT_PAGE]); - for (mlink = mpage->mlinks; mlink; mlink = mlink->next) + while (NULL != mlink) { dbadd_mlink(mlink); + mlink = mlink->next; + } for (key = ohash_first(&strings, &slot); NULL != key; key = ohash_next(&strings, &slot)) { |