diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2016-07-29 15:23:57 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2016-07-29 15:23:57 +0000 |
commit | 6186d581cef14eeac47ae71fb343d8b6b1b5b013 (patch) | |
tree | 6c7d9b83f1f56cd44f575aee8f9c081217d9bd91 /mandocdb.c | |
parent | fd04a2530af452252677a5bf5b97f05788e91ba6 (diff) | |
download | mandoc-6186d581cef14eeac47ae71fb343d8b6b1b5b013.tar.gz mandoc-6186d581cef14eeac47ae71fb343d8b6b1b5b013.tar.zst mandoc-6186d581cef14eeac47ae71fb343d8b6b1b5b013.zip |
No need to populate the TYPE_arch and TYPE_sec bits, the information
is provided directly to dba_page_add() in dbadd_mlink()
and to dba_page_new() in dbadd().
No need for a dedicated loop for NAME_FILE.
It's done in dbadd_mlink() anyway.
In this context, also record section numbers taken from filenames
and from .Dt and .TH macros, architectures taken from .Dt macros,
and fix the filtering of duplicate filename entries.
Diffstat (limited to 'mandocdb.c')
-rw-r--r-- | mandocdb.c | 33 |
1 files changed, 8 insertions, 25 deletions
@@ -1,4 +1,4 @@ -/* $Id: mandocdb.c,v 1.222 2016/07/19 22:40:33 schwarze Exp $ */ +/* $Id: mandocdb.c,v 1.223 2016/07/29 15:23:57 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2011-2016 Ingo Schwarze <schwarze@openbsd.org> @@ -1084,7 +1084,6 @@ mlink_check(struct mpage *mpage, struct mlink *mlink) static void mpages_merge(struct dba *dba, struct mparse *mp) { - char any[] = "any"; struct mpage *mpage, *mpage_dest; struct mlink *mlink, *mlink_dest; struct roff_man *man; @@ -1186,19 +1185,6 @@ mpages_merge(struct dba *dba, struct mparse *mp) mpage->arch = mandoc_strdup(mlink->arch); mpage->title = mandoc_strdup(mlink->name); } - putkey(mpage, mpage->sec, TYPE_sec); - if (*mpage->arch != '\0') - putkey(mpage, mpage->arch, TYPE_arch); - - for ( ; mlink != NULL; mlink = mlink->next) { - if ('\0' != *mlink->dsec) - putkey(mpage, mlink->dsec, TYPE_sec); - if ('\0' != *mlink->fsec) - putkey(mpage, mlink->fsec, TYPE_sec); - putkey(mpage, '\0' == *mlink->arch ? - any : mlink->arch, TYPE_arch); - putkey(mpage, mlink->name, NAME_FILE); - } assert(mpage->desc == NULL); if (man != NULL && man->macroset == MACROSET_MDOC) @@ -1347,13 +1333,6 @@ parse_cat(struct mpage *mpage, int fd) static void putkey(const struct mpage *mpage, char *value, uint64_t type) { - char *cp; - - assert(NULL != value); - if (TYPE_arch == type) - for (cp = value; *cp; cp++) - if (isupper((unsigned char)*cp)) - *cp = _tolower((unsigned char)*cp); putkeys(mpage, value, strlen(value), type); } @@ -1954,6 +1933,7 @@ dbadd_mlink(const struct mlink *mlink) { dba_page_alias(mlink->mpage->dba, mlink->name, NAME_FILE); dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->dsec); + dba_page_add(mlink->mpage->dba, DBP_SECT, mlink->fsec); dba_page_add(mlink->mpage->dba, DBP_ARCH, mlink->arch); dba_page_add(mlink->mpage->dba, DBP_FILE, mlink->file); } @@ -2013,13 +1993,16 @@ dbadd(struct dba *dba, struct mpage *mpage) cp = mpage->desc; i = strlen(cp); mustfree = render_string(&cp, &i); - mpage->dba = dba_page_new(dba->pages, mlink->name, - mlink->dsec, mlink->arch, cp, mlink->file, mpage->form); + mpage->dba = dba_page_new(dba->pages, mlink->name, mpage->sec, + *mpage->arch == '\0' ? mlink->arch : mpage->arch, + cp, mlink->file, mpage->form); if (mustfree) free(cp); - while ((mlink = mlink->next) != NULL) + while (mlink != NULL) { dbadd_mlink(mlink); + mlink = mlink->next; + } for (key = ohash_first(&names, &slot); NULL != key; key = ohash_next(&names, &slot)) { |