diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-03-19 21:51:20 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-03-19 21:51:20 +0000 |
commit | 8ab1f57b8dbe6a9799dafa1181cae85b1e51b101 (patch) | |
tree | 1b9ce5554777a29d2110ac56f793e070aac3dc51 /read.c | |
parent | 3868c0e69fda640025525113006a7ab108fa0fef (diff) | |
download | mandoc-8ab1f57b8dbe6a9799dafa1181cae85b1e51b101.tar.gz |
Generalize the mparse_alloc() and roff_alloc() functions by giving
them an "options" argument, replacing the existing "inttype" and
"quick" arguments, preparing for a future MPARSE_SO option.
Store this argument in struct mparse and struct roff, replacing the
existing "inttype", "parsetype", and "quick" members.
No functional change except one tiny cosmetic fix in roff_TH().
Diffstat (limited to 'read.c')
-rw-r--r-- | read.c | 34 |
1 files changed, 16 insertions, 18 deletions
@@ -53,7 +53,7 @@ struct mparse { enum mandoclevel file_status; /* status of current parse */ enum mandoclevel wlevel; /* ignore messages below this */ int line; /* line number in the file */ - enum mparset inttype; /* which parser to use */ + int options; /* parser options */ struct man *pman; /* persistent man parser */ struct mdoc *pmdoc; /* persistent mdoc parser */ struct man *man; /* man parser */ @@ -64,7 +64,6 @@ struct mparse { const char *file; struct buf *secondary; char *defos; /* default operating system */ - int quick; /* abort the parse early */ }; static void resize_buf(struct buf *, size_t); @@ -255,36 +254,36 @@ pset(const char *buf, int pos, struct mparse *curp) return; } - switch (curp->inttype) { - case (MPARSE_MDOC): + if (MPARSE_MDOC & curp->options) { if (NULL == curp->pmdoc) - curp->pmdoc = mdoc_alloc(curp->roff, curp, - curp->defos, curp->quick); + curp->pmdoc = mdoc_alloc( + curp->roff, curp, curp->defos, + MPARSE_QUICK & curp->options ? 1 : 0); assert(curp->pmdoc); curp->mdoc = curp->pmdoc; return; - case (MPARSE_MAN): + } else if (MPARSE_MAN & curp->options) { if (NULL == curp->pman) curp->pman = man_alloc(curp->roff, curp, - curp->quick); + MPARSE_QUICK & curp->options ? 1 : 0); assert(curp->pman); curp->man = curp->pman; return; - default: - break; } if (pos >= 3 && 0 == memcmp(buf, ".Dd", 3)) { if (NULL == curp->pmdoc) - curp->pmdoc = mdoc_alloc(curp->roff, curp, - curp->defos, curp->quick); + curp->pmdoc = mdoc_alloc( + curp->roff, curp, curp->defos, + MPARSE_QUICK & curp->options ? 1 : 0); assert(curp->pmdoc); curp->mdoc = curp->pmdoc; return; } if (NULL == curp->pman) - curp->pman = man_alloc(curp->roff, curp, curp->quick); + curp->pman = man_alloc(curp->roff, curp, + MPARSE_QUICK & curp->options ? 1 : 0); assert(curp->pman); curp->man = curp->pman; } @@ -765,8 +764,8 @@ out: } struct mparse * -mparse_alloc(enum mparset inttype, enum mandoclevel wlevel, - mandocmsg mmsg, char *defos, int quick) +mparse_alloc(int options, enum mandoclevel wlevel, + mandocmsg mmsg, char *defos) { struct mparse *curp; @@ -774,13 +773,12 @@ mparse_alloc(enum mparset inttype, enum mandoclevel wlevel, curp = mandoc_calloc(1, sizeof(struct mparse)); + curp->options = options; curp->wlevel = wlevel; curp->mmsg = mmsg; - curp->inttype = inttype; curp->defos = defos; - curp->quick = quick; - curp->roff = roff_alloc(inttype, curp, curp->quick); + curp->roff = roff_alloc(curp, options); return(curp); } |