diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-07-30 14:50:08 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-07-30 14:50:08 +0000 |
commit | 16567ee6b0b51e693f21d13f133f9fa14e59d992 (patch) | |
tree | 79ac8edf8630ed06810cbdb48ee6425abe52d828 /read.c | |
parent | 1825ddd5edbb59f71fa3505747e772b6e10bc773 (diff) | |
download | mandoc-16567ee6b0b51e693f21d13f133f9fa14e59d992.tar.gz |
Remove two useless FATAL errors.
When a file contains neither text nor macros, treat it as an empty document.
When the mdoc(7) document prologue is incomplete, use some default values.
Diffstat (limited to 'read.c')
-rw-r--r-- | read.c | 38 |
1 files changed, 21 insertions, 17 deletions
@@ -204,14 +204,12 @@ static const char * const mandocerrs[MANDOCERR_MAX] = { "generic fatal error", "input too large", - "not a manual", "column syntax is inconsistent", "NOT IMPLEMENTED: .Bd -file", "child violates parent syntax", "argument count wrong, violates syntax", "NOT IMPLEMENTED: .so with absolute path or \"..\"", ".so request failed", - "no document prologue", "static buffer exhausted", /* system errors */ @@ -264,18 +262,9 @@ pset(const char *buf, int pos, struct mparse *curp) } if (MPARSE_MDOC & curp->options) { - if (NULL == curp->pmdoc) - curp->pmdoc = mdoc_alloc( - curp->roff, curp, curp->defos, - MPARSE_QUICK & curp->options ? 1 : 0); - assert(curp->pmdoc); curp->mdoc = curp->pmdoc; return; } else if (MPARSE_MAN & curp->options) { - if (NULL == curp->pman) - curp->pman = man_alloc(curp->roff, curp, - MPARSE_QUICK & curp->options ? 1 : 0); - assert(curp->pman); curp->man = curp->pman; return; } @@ -683,6 +672,19 @@ mparse_end(struct mparse *curp) if (MANDOCLEVEL_FATAL <= curp->file_status) return; + if (curp->mdoc == NULL && + curp->man == NULL && + curp->sodest == NULL) { + if (curp->options & MPARSE_MDOC) + curp->mdoc = curp->pmdoc; + else { + if (curp->pman == NULL) + curp->pman = man_alloc(curp->roff, curp, + curp->options & MPARSE_QUICK ? 1 : 0); + curp->man = curp->pman; + } + } + if (curp->mdoc && ! mdoc_endparse(curp->mdoc)) { assert(MANDOCLEVEL_FATAL <= curp->file_status); return; @@ -693,12 +695,6 @@ mparse_end(struct mparse *curp) return; } - if ( ! (curp->mdoc || curp->man || curp->sodest)) { - mandoc_msg(MANDOCERR_NOTMANUAL, curp, 0, 0, NULL); - curp->file_status = MANDOCLEVEL_FATAL; - return; - } - roff_endparse(curp->roff); } @@ -796,6 +792,14 @@ mparse_alloc(int options, enum mandoclevel wlevel, curp->defos = defos; curp->roff = roff_alloc(curp, options); + if (curp->options & MPARSE_MDOC) + curp->pmdoc = mdoc_alloc( + curp->roff, curp, curp->defos, + curp->options & MPARSE_QUICK ? 1 : 0); + if (curp->options & MPARSE_MAN) + curp->pman = man_alloc(curp->roff, curp, + curp->options & MPARSE_QUICK ? 1 : 0); + return(curp); } |