From 51e313e588be7d0035542c2c7b1fb7fbbe768e34 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Sat, 29 Nov 2014 03:37:44 +0000 Subject: Provide a helper function macro_or_word() and use it to prune the same chunk of argument parsing code out of five of the eight callback functions. The other three have too much special handling to participate. As a bonus, let lookup() and mdoc_args() deal with line macros and retire the lookup_raw() helper and the mdoc_zargs() internal interface function. No functional change, minus 40 lines of code. --- mdoc_argv.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) (limited to 'mdoc_argv.c') diff --git a/mdoc_argv.c b/mdoc_argv.c index aebbac3a..3e7fabd2 100644 --- a/mdoc_argv.c +++ b/mdoc_argv.c @@ -411,23 +411,18 @@ argn_free(struct mdoc_arg *p, int iarg) p->argv[iarg] = p->argv[iarg+1]; } -enum margserr -mdoc_zargs(struct mdoc *mdoc, int line, int *pos, char *buf, char **v) -{ - - return(args(mdoc, line, pos, buf, ARGSFL_NONE, v)); -} - enum margserr mdoc_args(struct mdoc *mdoc, int line, int *pos, char *buf, enum mdoct tok, char **v) { - enum argsflag fl; struct mdoc_node *n; + char *v_local; + enum argsflag fl; - fl = mdocargs[tok].flags; - - if (MDOC_It != tok) + if (v == NULL) + v = &v_local; + fl = tok == MDOC_MAX ? ARGSFL_NONE : mdocargs[tok].flags; + if (tok != MDOC_It) return(args(mdoc, line, pos, buf, fl, v)); /* -- cgit v1.2.3-56-ge451