aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mandocdb.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2016-07-29 15:23:57 +0000
committerIngo Schwarze <schwarze@openbsd.org>2016-07-29 15:23:57 +0000
commit6186d581cef14eeac47ae71fb343d8b6b1b5b013 (patch)
tree6c7d9b83f1f56cd44f575aee8f9c081217d9bd91 /mandocdb.c
parentfd04a2530af452252677a5bf5b97f05788e91ba6 (diff)
downloadmandoc-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.c33
1 files changed, 8 insertions, 25 deletions
diff --git a/mandocdb.c b/mandocdb.c
index c9eda485..652ff159 100644
--- a/mandocdb.c
+++ b/mandocdb.c
@@ -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)) {