]> git.cameronkatri.com Git - mandoc.git/blobdiff - main.c
Partial cleanup of argument count validation in mdoc(7):
[mandoc.git] / main.c
diff --git a/main.c b/main.c
index 6b101492905c5a0dcef3076b1f33ba4c6475d22c..2289de8ad7a76365e333ac166ce630cf08e6fa27 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,6 +1,6 @@
-/*     $Id: main.c,v 1.129 2011/01/01 15:45:18 kristaps Exp $ */
+/*     $Id: main.c,v 1.133 2011/01/03 23:53:51 schwarze Exp $ */
 /*
- * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
+ * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
@@ -153,6 +153,7 @@ static      const char * const      mandocerrs[MANDOCERR_MAX] = {
 
        /* related to missing macro arguments */
        "skipping empty macro",
+       "argument count wrong",
        "missing display type",
        "list type must come first",
        "tag lists require a width argument",
@@ -176,9 +177,13 @@ static     const char * const      mandocerrs[MANDOCERR_MAX] = {
        "bad comment style",
        "unknown escape sequence",
        "unterminated quoted string",
+       
+       /* related to tables */
+       "extra data cells",
 
        "generic error",
 
+       /* related to tables */
        "bad table syntax",
        "bad table option",
        "bad table layout",
@@ -527,10 +532,7 @@ fdesc(struct curparse *curp)
        }
 
        assert(curp->roff);
-       if ( ! roff_endparse(curp->roff)) {
-               assert(MANDOCLEVEL_FATAL <= file_status);
-               goto cleanup;
-       }
+       roff_endparse(curp->roff);
 
        /*
         * With -Wstop and warnings or errors of at least
@@ -803,6 +805,14 @@ rerun:
                        break;
                }
 
+               /*
+                * If we encounter errors in the recursive parsebuf()
+                * call, make sure we don't continue parsing.
+                */
+
+               if (MANDOCLEVEL_FATAL <= file_status)
+                       break;
+
                /*
                 * If input parsers have not been allocated, do so now.
                 * We keep these instanced betwen parsers, but set them