]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc_argv.c
Simplify the code by making various mdoc parser helper functions void.
[mandoc.git] / mdoc_argv.c
index e411d51abbb2a6e25fc40c12594e08d1697345c7..20dac8af168636374535a348f685257bcbb05567 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_argv.c,v 1.93 2014/04/23 21:06:41 schwarze Exp $ */
+/*     $OpenBSD$ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2012 Ingo Schwarze <schwarze@openbsd.org>
@@ -15,9 +15,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
 
 #include <sys/types.h>
 
@@ -56,9 +54,9 @@ static        void             argn_free(struct mdoc_arg *, int);
 static enum margserr    args(struct mdoc *, int, int *,
                                char *, enum argsflag, char **);
 static int              args_checkpunct(const char *, int);
-static int              argv_multi(struct mdoc *, int,
+static void             argv_multi(struct mdoc *, int,
                                struct mdoc_argv *, int *, char *);
-static int              argv_single(struct mdoc *, int,
+static void             argv_single(struct mdoc *, int,
                                struct mdoc_argv *, int *, char *);
 
 static const enum argvflag argvflags[MDOC_ARG_MAX] = {
@@ -179,7 +177,7 @@ static      const struct mdocarg mdocargs[MDOC_MAX] = {
        { ARGSFL_NONE, NULL }, /* Nd */
        { ARGSFL_DELIM, NULL }, /* Nm */
        { ARGSFL_DELIM, NULL }, /* Op */
-       { ARGSFL_NONE, NULL }, /* Ot */
+       { ARGSFL_DELIM, NULL }, /* Ot */
        { ARGSFL_DELIM, NULL }, /* Pa */
        { ARGSFL_NONE, args_Ex }, /* Rv */
        { ARGSFL_DELIM, NULL }, /* St */
@@ -249,7 +247,7 @@ static      const struct mdocarg mdocargs[MDOC_MAX] = {
        { ARGSFL_NONE, NULL }, /* Ek */
        { ARGSFL_NONE, NULL }, /* Bt */
        { ARGSFL_NONE, NULL }, /* Hf */
-       { ARGSFL_NONE, NULL }, /* Fr */
+       { ARGSFL_DELIM, NULL }, /* Fr */
        { ARGSFL_NONE, NULL }, /* Ud */
        { ARGSFL_DELIM, NULL }, /* Lb */
        { ARGSFL_NONE, NULL }, /* Lp */
@@ -260,7 +258,7 @@ static      const struct mdocarg mdocargs[MDOC_MAX] = {
        { ARGSFL_DELIM, NULL }, /* Brc */
        { ARGSFL_NONE, NULL }, /* %C */
        { ARGSFL_NONE, NULL }, /* Es */
-       { ARGSFL_NONE, NULL }, /* En */
+       { ARGSFL_DELIM, NULL }, /* En */
        { ARGSFL_DELIM, NULL }, /* Dx */
        { ARGSFL_NONE, NULL }, /* %Q */
        { ARGSFL_NONE, NULL }, /* br */
@@ -344,12 +342,10 @@ mdoc_argv(struct mdoc *mdoc, int line, enum mdoct tok,
 
        switch (argvflags[tmp.arg]) {
        case ARGV_SINGLE:
-               if ( ! argv_single(mdoc, line, &tmp, pos, buf))
-                       return(ARGV_ERROR);
+               argv_single(mdoc, line, &tmp, pos, buf);
                break;
        case ARGV_MULTI:
-               if ( ! argv_multi(mdoc, line, &tmp, pos, buf))
-                       return(ARGV_ERROR);
+               argv_multi(mdoc, line, &tmp, pos, buf);
                break;
        case ARGV_NONE:
                break;
@@ -461,7 +457,8 @@ args(struct mdoc *mdoc, int line, int *pos,
                 * is unterminated.
                 */
                if (MDOC_PHRASELIT & mdoc->flags)
-                       mdoc_pmsg(mdoc, line, *pos, MANDOCERR_BADQUOTE);
+                       mandoc_msg(MANDOCERR_ARG_QUOTE,
+                           mdoc->parse, line, *pos, NULL);
 
                mdoc->flags &= ~MDOC_PHRASELIT;
                return(ARGS_EOLN);
@@ -520,7 +517,8 @@ args(struct mdoc *mdoc, int line, int *pos,
 
                /* Whitespace check for eoln case... */
                if ('\0' == *p && ' ' == *(p - 1))
-                       mdoc_pmsg(mdoc, line, *pos, MANDOCERR_EOLNSPACE);
+                       mandoc_msg(MANDOCERR_SPACE_EOL, mdoc->parse,
+                           line, *pos, NULL);
 
                *pos += (int)(p - *v);
 
@@ -575,7 +573,8 @@ args(struct mdoc *mdoc, int line, int *pos,
                if ('\0' == buf[*pos]) {
                        if (MDOC_PPHRASE & mdoc->flags)
                                return(ARGS_QWORD);
-                       mdoc_pmsg(mdoc, line, *pos, MANDOCERR_BADQUOTE);
+                       mandoc_msg(MANDOCERR_ARG_QUOTE,
+                           mdoc->parse, line, *pos, NULL);
                        return(ARGS_QWORD);
                }
 
@@ -589,7 +588,8 @@ args(struct mdoc *mdoc, int line, int *pos,
                        (*pos)++;
 
                if ('\0' == buf[*pos])
-                       mdoc_pmsg(mdoc, line, *pos, MANDOCERR_EOLNSPACE);
+                       mandoc_msg(MANDOCERR_SPACE_EOL, mdoc->parse,
+                           line, *pos, NULL);
 
                return(ARGS_QWORD);
        }
@@ -650,7 +650,7 @@ args_checkpunct(const char *buf, int i)
        return('\0' == buf[i]);
 }
 
-static int
+static void
 argv_multi(struct mdoc *mdoc, int line,
                struct mdoc_argv *v, int *pos, char *buf)
 {
@@ -658,25 +658,21 @@ argv_multi(struct mdoc *mdoc, int line,
        char            *p;
 
        for (v->sz = 0; ; v->sz++) {
-               if ('-' == buf[*pos])
+               if (buf[*pos] == '-')
                        break;
                ac = args(mdoc, line, pos, buf, ARGSFL_NONE, &p);
-               if (ARGS_ERROR == ac)
-                       return(0);
-               else if (ARGS_EOLN == ac)
+               if (ac == ARGS_EOLN)
                        break;
 
-               if (0 == v->sz % MULTI_STEP)
+               if (v->sz % MULTI_STEP == 0)
                        v->value = mandoc_reallocarray(v->value,
                            v->sz + MULTI_STEP, sizeof(char *));
 
                v->value[(int)v->sz] = mandoc_strdup(p);
        }
-
-       return(1);
 }
 
-static int
+static void
 argv_single(struct mdoc *mdoc, int line,
                struct mdoc_argv *v, int *pos, char *buf)
 {
@@ -684,14 +680,10 @@ argv_single(struct mdoc *mdoc, int line,
        char            *p;
 
        ac = args(mdoc, line, pos, buf, ARGSFL_NONE, &p);
-       if (ARGS_ERROR == ac)
-               return(0);
-       if (ARGS_EOLN == ac)
-               return(1);
+       if (ac == ARGS_EOLN)
+               return;
 
        v->sz = 1;
        v->value = mandoc_malloc(sizeof(char *));
        v->value[0] = mandoc_strdup(p);
-
-       return(1);
 }