diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2014-11-29 03:37:44 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2014-11-29 03:37:44 +0000 |
commit | 3d06fba36aaf6d0e66e60fba15af8837414b9ff9 (patch) | |
tree | 16b27bee82e04643322d42523d978a2b926670c4 /mdoc_argv.c | |
parent | 857b9aac8422fa0bebd1d83b87c8fbf4d7a1f044 (diff) | |
download | mandoc-3d06fba36aaf6d0e66e60fba15af8837414b9ff9.tar.gz |
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.
Diffstat (limited to 'mdoc_argv.c')
-rw-r--r-- | mdoc_argv.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/mdoc_argv.c b/mdoc_argv.c index aebbac3a..3e7fabd2 100644 --- a/mdoc_argv.c +++ b/mdoc_argv.c @@ -412,22 +412,17 @@ argn_free(struct mdoc_arg *p, int iarg) } 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)); /* |