]> git.cameronkatri.com Git - mandoc.git/blobdiff - read.c
Remove two useless FATAL errors.
[mandoc.git] / read.c
diff --git a/read.c b/read.c
index be45fd692c1693f8d134f15345062228dd1b4c2a..21357c62d08ef060a92284c763fd76ba4f1054d2 100644 (file)
--- a/read.c
+++ b/read.c
@@ -1,4 +1,4 @@
-/*     $Id: read.c,v 1.67 2014/07/07 16:12:20 schwarze Exp $ */
+/*     $Id: read.c,v 1.72 2014/07/30 14:50:08 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -65,7 +65,7 @@ struct        mparse {
        mandocmsg         mmsg; /* warning/error message handler */
        const char       *file;
        struct buf       *secondary;
-       char             *defos; /* default operating system */
+       const char       *defos; /* default operating system */
 };
 
 static void      resize_buf(struct buf *, size_t);
@@ -136,6 +136,7 @@ static      const char * const      mandocerrs[MANDOCERR_MAX] = {
        "missing display type, using -ragged",
        "list type is not the first argument",
        "missing -width in -tag list, using 8n",
+       "missing name for .Ex, using \"\"",
        "empty head in list item",
        "empty list item",
        "missing font type, using \\fR",
@@ -180,34 +181,35 @@ static    const char * const      mandocerrs[MANDOCERR_MAX] = {
        "data block still open",
        "ignoring extra data cells",
 
+       /* related to document structure and macros */
        "input stack limit exceeded, infinite loop?",
        "skipping bad character",
-       "escaped character not allowed in a name",
-       "manual name not yet set",
        "skipping unknown macro",
-       "argument count wrong",
-       "unknown standard specifier",
        "skipping column outside column list",
        "skipping end of block that is not open",
-       "missing end of block",
-       "scope open on exit",
-       "uname(3) system call failed",
-       "request requires a numeric argument",
+       "inserting missing end of block",
+       "appending missing end of block",
+
+       /* related to request and macro arguments */
+       "escaped character not allowed in a name",
+       "argument count wrong",
        "missing list type, using -item",
+       "missing manual name, using \"\"",
+       "uname(3) system call failed, using UNKNOWN",
+       "unknown standard specifier",
+       "skipping request without numeric argument",
        "skipping all arguments",
        "skipping excess arguments",
 
        "generic fatal error",
 
        "input too large",
-       "not a manual",
        "column syntax is inconsistent",
        "NOT IMPLEMENTED: .Bd -file",
        "child violates parent syntax",
        "argument count wrong, violates syntax",
        "NOT IMPLEMENTED: .so with absolute path or \"..\"",
        ".so request failed",
-       "no document prologue",
        "static buffer exhausted",
 
        /* system errors */
@@ -260,18 +262,9 @@ pset(const char *buf, int pos, struct mparse *curp)
        }
 
        if (MPARSE_MDOC & curp->options) {
-               if (NULL == curp->pmdoc)
-                       curp->pmdoc = mdoc_alloc(
-                           curp->roff, curp, curp->defos,
-                           MPARSE_QUICK & curp->options ? 1 : 0);
-               assert(curp->pmdoc);
                curp->mdoc = curp->pmdoc;
                return;
        } else if (MPARSE_MAN & curp->options) {
-               if (NULL == curp->pman)
-                       curp->pman = man_alloc(curp->roff, curp,
-                           MPARSE_QUICK & curp->options ? 1 : 0);
-               assert(curp->pman);
                curp->man = curp->pman;
                return;
        }
@@ -679,6 +672,19 @@ mparse_end(struct mparse *curp)
        if (MANDOCLEVEL_FATAL <= curp->file_status)
                return;
 
+       if (curp->mdoc == NULL &&
+           curp->man == NULL &&
+           curp->sodest == NULL) {
+               if (curp->options & MPARSE_MDOC)
+                       curp->mdoc = curp->pmdoc;
+               else {
+                       if (curp->pman == NULL)
+                               curp->pman = man_alloc(curp->roff, curp,
+                                   curp->options & MPARSE_QUICK ? 1 : 0);
+                       curp->man = curp->pman;
+               }
+       }
+
        if (curp->mdoc && ! mdoc_endparse(curp->mdoc)) {
                assert(MANDOCLEVEL_FATAL <= curp->file_status);
                return;
@@ -689,12 +695,6 @@ mparse_end(struct mparse *curp)
                return;
        }
 
-       if ( ! (curp->mdoc || curp->man || curp->sodest)) {
-               mandoc_msg(MANDOCERR_NOTMANUAL, curp, 0, 0, NULL);
-               curp->file_status = MANDOCLEVEL_FATAL;
-               return;
-       }
-
        roff_endparse(curp->roff);
 }
 
@@ -778,7 +778,7 @@ out:
 
 struct mparse *
 mparse_alloc(int options, enum mandoclevel wlevel,
-               mandocmsg mmsg, char *defos)
+               mandocmsg mmsg, const char *defos)
 {
        struct mparse   *curp;
 
@@ -792,6 +792,14 @@ mparse_alloc(int options, enum mandoclevel wlevel,
        curp->defos = defos;
 
        curp->roff = roff_alloc(curp, options);
+       if (curp->options & MPARSE_MDOC)
+               curp->pmdoc = mdoc_alloc(
+                   curp->roff, curp, curp->defos,
+                   curp->options & MPARSE_QUICK ? 1 : 0);
+       if (curp->options & MPARSE_MAN)
+               curp->pman = man_alloc(curp->roff, curp,
+                   curp->options & MPARSE_QUICK ? 1 : 0);
+
        return(curp);
 }