]> git.cameronkatri.com Git - mandoc.git/blobdiff - mandoc_msg.c
Finally delete support for the "_whatdb" configuration directive,
[mandoc.git] / mandoc_msg.c
index 5dfa26d1f6f71dc1527daa7b4527ca1aaf3f4f88..4a3e5203b338c9c4fb034b5c956ab441d1ddb3d1 100644 (file)
@@ -1,7 +1,7 @@
-/*     $Id: mandoc_msg.c,v 1.4 2018/12/16 00:21:05 schwarze Exp $ */
+/*     $Id: mandoc_msg.c,v 1.10 2020/01/19 18:02:00 schwarze Exp $ */
 /*
  * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
 /*
  * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2014,2015,2016,2017,2018 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2014-2020 Ingo Schwarze <schwarze@openbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -15,6 +15,8 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
+#include "config.h"
+
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -27,8 +29,8 @@ static        const enum mandocerr lowest_type[MANDOCLEVEL_MAX] = {
        MANDOCERR_WARNING,
        MANDOCERR_ERROR,
        MANDOCERR_UNSUPP,
        MANDOCERR_WARNING,
        MANDOCERR_ERROR,
        MANDOCERR_UNSUPP,
-       MANDOCERR_MAX,
-       MANDOCERR_MAX
+       MANDOCERR_BADARG,
+       MANDOCERR_SYSERR
 };
 
 static const char *const level_name[MANDOCLEVEL_MAX] = {
 };
 
 static const char *const level_name[MANDOCLEVEL_MAX] = {
@@ -81,7 +83,7 @@ static        const char *const type_message[MANDOCERR_MAX] = {
        "missing manual title, using \"\"",
        "missing manual section, using \"\"",
        "unknown manual section",
        "missing manual title, using \"\"",
        "missing manual section, using \"\"",
        "unknown manual section",
-       "missing date, using today's date",
+       "missing date, using \"\"",
        "cannot parse date, using it verbatim",
        "date in the future, using it anyway",
        "missing Os macro, using \"\"",
        "cannot parse date, using it verbatim",
        "date in the future, using it anyway",
        "missing Os macro, using \"\"",
@@ -191,7 +193,6 @@ static      const char *const type_message[MANDOCERR_MAX] = {
        "data block open at end of tbl",
 
        /* related to document structure and macros */
        "data block open at end of tbl",
 
        /* related to document structure and macros */
-       NULL,
        "duplicate prologue macro",
        "skipping late title macro",
        "input stack limit exceeded, infinite loop?",
        "duplicate prologue macro",
        "skipping late title macro",
        "input stack limit exceeded, infinite loop?",
@@ -222,6 +223,7 @@ static      const char *const type_message[MANDOCERR_MAX] = {
        "excessive shift",
        "NOT IMPLEMENTED: .so with absolute path or \"..\"",
        ".so request failed",
        "excessive shift",
        "NOT IMPLEMENTED: .so with absolute path or \"..\"",
        ".so request failed",
+       "skipping tag containing whitespace",
        "skipping all arguments",
        "skipping excess arguments",
        "divide by zero",
        "skipping all arguments",
        "skipping excess arguments",
        "divide by zero",
@@ -238,11 +240,40 @@ static    const char *const type_message[MANDOCERR_MAX] = {
        "eqn delim option in tbl",
        "unsupported tbl layout modifier",
        "ignoring macro in table",
        "eqn delim option in tbl",
        "unsupported tbl layout modifier",
        "ignoring macro in table",
+
+       /* bad command line arguments */
+       NULL,
+       "bad command line argument",
+       "duplicate command line argument",
+       "option has a superfluous value",
+       "missing option value",
+       "bad option value",
+       "duplicate option value",
+       "no such tag",
+
+       /* system errors */
+       NULL,
+       "dup",
+       "exec",
+       "fdopen",
+       "fflush",
+       "fork",
+       "fstat",
+       "getline",
+       "glob",
+       "gzclose",
+       "gzdopen",
+       "mkstemp",
+       "open",
+       "pledge",
+       "read",
+       "wait",
+       "write",
 };
 
 };
 
-static FILE            *fileptr = stderr;
+static FILE            *fileptr = NULL;
 static const char      *filename = NULL;
 static const char      *filename = NULL;
-static enum mandocerr   min_type = MANDOCERR_MAX;
+static enum mandocerr   min_type = MANDOCERR_BADARG;
 static enum mandoclevel rc = MANDOCLEVEL_OK;
 
 
 static enum mandoclevel rc = MANDOCLEVEL_OK;
 
 
@@ -295,10 +326,10 @@ mandoc_msg(enum mandocerr t, int line, int col, const char *fmt, ...)
        va_list                  ap;
        enum mandoclevel         level;
 
        va_list                  ap;
        enum mandoclevel         level;
 
-       if (t < min_type && t != MANDOCERR_FILE)
+       if (t < min_type)
                return;
 
                return;
 
-       level = MANDOCLEVEL_UNSUPP;
+       level = MANDOCLEVEL_SYSERR;
        while (t < lowest_type[level])
                level--;
        mandoc_msg_setrc(level);
        while (t < lowest_type[level])
                level--;
        mandoc_msg_setrc(level);
@@ -325,3 +356,12 @@ mandoc_msg(enum mandocerr t, int line, int col, const char *fmt, ...)
        }
        fputc('\n', fileptr);
 }
        }
        fputc('\n', fileptr);
 }
+
+void
+mandoc_msg_summary(void)
+{
+       if (fileptr != NULL && rc != MANDOCLEVEL_OK)
+               fprintf(fileptr,
+                   "%s: see above the output for %s messages\n",
+                   getprogname(), level_name[rc]);
+}