aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mandocdb.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-01-27 01:09:14 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-01-27 01:09:14 +0000
commitd6acf872e8ac0f7bcf4efa6dd9803b6c9e8c6d00 (patch)
tree9bc929713d73ab18183b45b3ba3594d1f20e9947 /mandocdb.c
parent87affb6be521107f1dea4b65c49bd1e5cecc2ca0 (diff)
downloadmandoc-d6acf872e8ac0f7bcf4efa6dd9803b6c9e8c6d00.tar.gz
mandoc-d6acf872e8ac0f7bcf4efa6dd9803b6c9e8c6d00.tar.zst
mandoc-d6acf872e8ac0f7bcf4efa6dd9803b6c9e8c6d00.zip
If parsing a page reveals that it is neither mdoc(7) nor man(7),
fall back to treating it as preformatted rather than treating it as man(7) anyway.
Diffstat (limited to 'mandocdb.c')
-rw-r--r--mandocdb.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/mandocdb.c b/mandocdb.c
index 6fa441bf..e6319489 100644
--- a/mandocdb.c
+++ b/mandocdb.c
@@ -1,4 +1,4 @@
-/* $Id: mandocdb.c,v 1.239 2017/01/27 01:04:25 schwarze Exp $ */
+/* $Id: mandocdb.c,v 1.240 2017/01/27 01:09:14 schwarze Exp $ */
/*
* Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -1153,6 +1153,7 @@ mpages_merge(struct dba *dba, struct mparse *mp)
if (mlink->dform != FORM_CAT || mlink->fform != FORM_CAT) {
mparse_readfd(mp, fd, mlink->file);
close(fd);
+ fd = -1;
mparse_result(mp, &man, &sodest);
}
@@ -1209,24 +1210,27 @@ mpages_merge(struct dba *dba, struct mparse *mp)
mpage->title = mandoc_strdup(man->meta.title);
} else if (man != NULL && man->macroset == MACROSET_MAN) {
man_validate(man);
- mpage->form = FORM_SRC;
- mpage->sec = mandoc_strdup(man->meta.msec);
- mpage->arch = mandoc_strdup(mlink->arch);
- mpage->title = mandoc_strdup(man->meta.title);
- } else {
+ if (*man->meta.msec != '\0' ||
+ *man->meta.msec != '\0') {
+ mpage->form = FORM_SRC;
+ mpage->sec = mandoc_strdup(man->meta.msec);
+ mpage->arch = mandoc_strdup(mlink->arch);
+ mpage->title = mandoc_strdup(man->meta.title);
+ } else
+ man = NULL;
+ }
+
+ assert(mpage->desc == NULL);
+ if (man == NULL) {
mpage->form = FORM_CAT;
mpage->sec = mandoc_strdup(mlink->dsec);
mpage->arch = mandoc_strdup(mlink->arch);
mpage->title = mandoc_strdup(mlink->name);
- }
-
- assert(mpage->desc == NULL);
- if (man != NULL && man->macroset == MACROSET_MDOC)
+ parse_cat(mpage, fd);
+ } else if (man->macroset == MACROSET_MDOC)
parse_mdoc(mpage, &man->meta, man->first);
- else if (man != NULL)
- parse_man(mpage, &man->meta, man->first);
else
- parse_cat(mpage, fd);
+ parse_man(mpage, &man->meta, man->first);
if (mpage->desc == NULL)
mpage->desc = mandoc_strdup(mpage->mlinks->name);