diff options
author | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2015-10-19 19:51:07 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2015-10-19 19:51:07 +0000 |
commit | f0733ac55e42ff912d3ca6354063c548cdc9b3fb (patch) | |
tree | a8aa27adb707483c1cae2b8443b7daf2aff0ed12 | |
parent | eb4fd5503fc9ca2e528dcf699ee4c5e270a558d3 (diff) |
Simplify, no functional change:
Delete the outmdoc, outman, and outfree function pointers.
-rw-r--r-- | usr.bin/mandoc/main.c | 88 |
1 files changed, 52 insertions, 36 deletions
diff --git a/usr.bin/mandoc/main.c b/usr.bin/mandoc/main.c index f62bca14ad8..413c27c6ff8 100644 --- a/usr.bin/mandoc/main.c +++ b/usr.bin/mandoc/main.c @@ -1,4 +1,4 @@ -/* $OpenBSD: main.c,v 1.157 2015/10/16 21:35:16 schwarze Exp $ */ +/* $OpenBSD: main.c,v 1.158 2015/10/19 19:51:06 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010-2012, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org> @@ -52,10 +52,6 @@ enum outmode { OUTMODE_ONE }; -typedef void (*out_mdoc)(void *, const struct roff_man *); -typedef void (*out_man)(void *, const struct roff_man *); -typedef void (*out_free)(void *); - enum outt { OUTT_ASCII = 0, /* -Tascii */ OUTT_LOCALE, /* -Tlocale */ @@ -73,9 +69,6 @@ struct curparse { enum mandoclevel wlevel; /* ignore messages below this */ int wstop; /* stop after a file with a warning */ enum outt outtype; /* which output to use */ - out_mdoc outmdoc; /* mdoc output ptr */ - out_man outman; /* man output ptr */ - out_free outfree; /* free output ptr */ void *outdata; /* data for output */ struct manoutput *outopts; /* output options */ }; @@ -453,8 +446,22 @@ main(int argc, char *argv[]) mparse_reset(curp.mp); } - if (curp.outfree) - (*curp.outfree)(curp.outdata); + switch (curp.outtype) { + case OUTT_HTML: + html_free(curp.outdata); + break; + case OUTT_UTF8: + case OUTT_LOCALE: + case OUTT_ASCII: + ascii_free(curp.outdata); + break; + case OUTT_PDF: + case OUTT_PS: + pspdf_free(curp.outdata); + break; + default: + break; + } mparse_free(curp.mp); mchars_free(); @@ -633,72 +640,81 @@ parse(struct curparse *curp, int fd, const char *file) /* If unset, allocate output dev now (if applicable). */ - if ( ! (curp->outman && curp->outmdoc)) { + if (curp->outdata == NULL) { switch (curp->outtype) { case OUTT_HTML: curp->outdata = html_alloc(curp->outopts); - curp->outfree = html_free; break; case OUTT_UTF8: curp->outdata = utf8_alloc(curp->outopts); - curp->outfree = ascii_free; break; case OUTT_LOCALE: curp->outdata = locale_alloc(curp->outopts); - curp->outfree = ascii_free; break; case OUTT_ASCII: curp->outdata = ascii_alloc(curp->outopts); - curp->outfree = ascii_free; break; case OUTT_PDF: curp->outdata = pdf_alloc(curp->outopts); - curp->outfree = pspdf_free; break; case OUTT_PS: curp->outdata = ps_alloc(curp->outopts); - curp->outfree = pspdf_free; break; default: break; } + } + + mparse_result(curp->mp, &man, NULL); + /* Execute the out device, if it exists. */ + + if (man == NULL) + return; + if (man->macroset == MACROSET_MDOC) { switch (curp->outtype) { case OUTT_HTML: - curp->outman = html_man; - curp->outmdoc = html_mdoc; + html_mdoc(curp->outdata, man); break; case OUTT_TREE: - curp->outman = tree_man; - curp->outmdoc = tree_mdoc; + tree_mdoc(curp->outdata, man); break; case OUTT_MAN: - curp->outmdoc = man_mdoc; - curp->outman = man_man; + man_mdoc(curp->outdata, man); break; case OUTT_PDF: case OUTT_ASCII: case OUTT_UTF8: case OUTT_LOCALE: case OUTT_PS: - curp->outman = terminal_man; - curp->outmdoc = terminal_mdoc; + terminal_mdoc(curp->outdata, man); + break; + default: + break; + } + } + if (man->macroset == MACROSET_MAN) { + switch (curp->outtype) { + case OUTT_HTML: + html_man(curp->outdata, man); + break; + case OUTT_TREE: + tree_man(curp->outdata, man); + break; + case OUTT_MAN: + man_man(curp->outdata, man); + break; + case OUTT_PDF: + case OUTT_ASCII: + case OUTT_UTF8: + case OUTT_LOCALE: + case OUTT_PS: + terminal_man(curp->outdata, man); break; default: break; } } - - mparse_result(curp->mp, &man, NULL); - - /* Execute the out device, if it exists. */ - - if (man == NULL) - return; - if (curp->outmdoc != NULL && man->macroset == MACROSET_MDOC) - (*curp->outmdoc)(curp->outdata, man); - if (curp->outman != NULL && man->macroset == MACROSET_MAN) - (*curp->outman)(curp->outdata, man); } static void |