]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc_argv.c
The groff man-ext macros define fonts CB, CI, and CR,
[mandoc.git] / mdoc_argv.c
index 18042047d58a6f0d8c70a74e8e9c27ceaa41aa37..db4c63f0d6d24f97445b8d2f2dc1dcccd79025f3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_argv.c,v 1.110 2017/03/03 15:05:48 schwarze Exp $ */
+/*     $Id: mdoc_argv.c,v 1.115 2017/05/30 16:22:03 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2012, 2014-2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -144,8 +144,7 @@ static      const enum mdocargt args_Bl[] = {
        MDOC_ARG_MAX
 };
 
-static const struct mdocarg mdocargs[MDOC_MAX] = {
-       { ARGSFL_DELIM, NULL }, /* Ap */
+static const struct mdocarg __mdocargs[MDOC_MAX - MDOC_Dd] = {
        { ARGSFL_NONE, NULL }, /* Dd */
        { ARGSFL_NONE, NULL }, /* Dt */
        { ARGSFL_NONE, NULL }, /* Os */
@@ -161,6 +160,7 @@ static      const struct mdocarg mdocargs[MDOC_MAX] = {
        { ARGSFL_NONE, NULL }, /* It */
        { ARGSFL_DELIM, NULL }, /* Ad */
        { ARGSFL_DELIM, args_An }, /* An */
+       { ARGSFL_DELIM, NULL }, /* Ap */
        { ARGSFL_DELIM, NULL }, /* Ar */
        { ARGSFL_DELIM, NULL }, /* Cd */
        { ARGSFL_DELIM, NULL }, /* Cm */
@@ -263,12 +263,10 @@ static    const struct mdocarg mdocargs[MDOC_MAX] = {
        { ARGSFL_DELIM, NULL }, /* En */
        { ARGSFL_DELIM, NULL }, /* Dx */
        { ARGSFL_NONE, NULL }, /* %Q */
-       { ARGSFL_NONE, NULL }, /* br */
-       { ARGSFL_NONE, NULL }, /* sp */
        { ARGSFL_NONE, NULL }, /* %U */
        { ARGSFL_NONE, NULL }, /* Ta */
-       { ARGSFL_NONE, NULL }, /* ll */
 };
+static const struct mdocarg *const mdocargs = __mdocargs - MDOC_Dd;
 
 
 /*
@@ -277,7 +275,7 @@ static      const struct mdocarg mdocargs[MDOC_MAX] = {
  * Some flags take no argument, some one, some multiple.
  */
 void
-mdoc_argv(struct roff_man *mdoc, int line, int tok,
+mdoc_argv(struct roff_man *mdoc, int line, enum roff_tok tok,
        struct mdoc_arg **reta, int *pos, char *buf)
 {
        struct mdoc_argv          tmpv;
@@ -291,6 +289,7 @@ mdoc_argv(struct roff_man *mdoc, int line, int tok,
 
        /* Which flags does this macro support? */
 
+       assert(tok >= MDOC_Dd && tok < MDOC_MAX);
        argtable = mdocargs[tok].argvs;
        if (argtable == NULL)
                return;
@@ -415,7 +414,7 @@ argn_free(struct mdoc_arg *p, int iarg)
 
 enum margserr
 mdoc_args(struct roff_man *mdoc, int line, int *pos,
-       char *buf, int tok, char **v)
+       char *buf, enum roff_tok tok, char **v)
 {
        struct roff_node *n;
        char             *v_local;
@@ -556,14 +555,14 @@ args(struct roff_man *mdoc, int line, int *pos,
                        if ( ! (mdoc->flags & MDOC_PHRASE))
                                mandoc_msg(MANDOCERR_ARG_QUOTE,
                                    mdoc->parse, line, *pos, NULL);
-                       return ARGS_QWORD;
+                       return ARGS_WORD;
                }
 
                mdoc->flags &= ~MDOC_PHRASELIT;
                buf[(*pos)++] = '\0';
 
                if ('\0' == buf[*pos])
-                       return ARGS_QWORD;
+                       return ARGS_WORD;
 
                while (' ' == buf[*pos])
                        (*pos)++;
@@ -572,7 +571,7 @@ args(struct roff_man *mdoc, int line, int *pos,
                        mandoc_msg(MANDOCERR_SPACE_EOL, mdoc->parse,
                            line, *pos, NULL);
 
-               return ARGS_QWORD;
+               return ARGS_WORD;
        }
 
        p = &buf[*pos];