From 68183e3516ca405d803db497157cd8246b9b8bad Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Sun, 30 Dec 2018 00:49:54 +0000 Subject: Cleanup, no functional change: The struct roff_man used to be a bad mixture of internal parser state and public parsing results. Move the public results to the parsing result struct roff_meta, which is already public. Move the rest of struct roff_man to the parser-internal header roff_int.h. Since the validators need access to the parser state, call them from the top level parser during mparse_result() rather than from the main programs, also reducing code duplication. This keeps parser internal state out of thee main programs (five in mandoc portable) and out of eight formatters. --- mandocd.c | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'mandocd.c') diff --git a/mandocd.c b/mandocd.c index 130849b8..77fd3d0d 100644 --- a/mandocd.c +++ b/mandocd.c @@ -1,4 +1,4 @@ -/* $Id: mandocd.c,v 1.8 2018/12/14 01:18:26 schwarze Exp $ */ +/* $Id: mandocd.c,v 1.9 2018/12/30 00:49:55 schwarze Exp $ */ /* * Copyright (c) 2017 Michael Stapelberg * Copyright (c) 2017 Ingo Schwarze @@ -244,35 +244,29 @@ main(int argc, char *argv[]) static void process(struct mparse *parser, enum outt outtype, void *formatter) { - struct roff_man *man; + struct roff_meta *meta; mparse_readfd(parser, STDIN_FILENO, ""); - mparse_result(parser, &man, NULL); - - if (man == NULL) - return; - - if (man->macroset == MACROSET_MDOC) { - mdoc_validate(man); + meta = mparse_result(parser); + if (meta->macroset == MACROSET_MDOC) { switch (outtype) { case OUTT_ASCII: case OUTT_UTF8: - terminal_mdoc(formatter, man); + terminal_mdoc(formatter, meta); break; case OUTT_HTML: - html_mdoc(formatter, man); + html_mdoc(formatter, meta); break; } } - if (man->macroset == MACROSET_MAN) { - man_validate(man); + if (meta->macroset == MACROSET_MAN) { switch (outtype) { case OUTT_ASCII: case OUTT_UTF8: - terminal_man(formatter, man); + terminal_man(formatter, meta); break; case OUTT_HTML: - html_man(formatter, man); + html_man(formatter, meta); break; } } -- cgit v1.2.3-56-ge451