]> git.cameronkatri.com Git - mandoc.git/commitdiff
Start systematic improvements of error reporting.
authorIngo Schwarze <schwarze@openbsd.org>
Fri, 20 Jun 2014 17:24:00 +0000 (17:24 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Fri, 20 Jun 2014 17:24:00 +0000 (17:24 +0000)
So far, this covers all WARNINGs related to the prologue.

1) hierarchical naming of MANDOCERR_* constants
2) mention the macro name in messages where that adds clarity
3) add one missing MANDOCERR_DATE_MISSING msg
4) fix the wording of one message related to the man(7) prologue

Started on the plane back from Ottawa.

man_validate.c
mandoc.c
mandoc.h
mdoc.c
mdoc_validate.c
read.c

index 5daaa460242e01ac7283c98ff9d244e6780e9f75..15c34e08881782e217f88dc9f8ccc9011f7e9bb4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_validate.c,v 1.91 2014/04/20 16:46:04 schwarze Exp $ */
+/*     $Id: man_validate.c,v 1.92 2014/06/20 17:24:00 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -202,7 +202,7 @@ check_root(CHKARGS)
                man_nmsg(man, n, MANDOCERR_NODOCBODY);
                return(0);
        } else if (NULL == man->meta.title) {
                man_nmsg(man, n, MANDOCERR_NODOCBODY);
                return(0);
        } else if (NULL == man->meta.title) {
-               man_nmsg(man, n, MANDOCERR_NOTITLE);
+               man_nmsg(man, n, MANDOCERR_TH_MISSING);
 
                /*
                 * If a title hasn't been set, do so now (by
 
                /*
                 * If a title hasn't been set, do so now (by
@@ -390,6 +390,7 @@ post_IP(CHKARGS)
 static int
 post_TH(CHKARGS)
 {
 static int
 post_TH(CHKARGS)
 {
+       struct man_node *nb;
        const char      *p;
 
        free(man->meta.title);
        const char      *p;
 
        free(man->meta.title);
@@ -401,6 +402,8 @@ post_TH(CHKARGS)
        man->meta.title = man->meta.vol = man->meta.date =
            man->meta.msec = man->meta.source = NULL;
 
        man->meta.title = man->meta.vol = man->meta.date =
            man->meta.msec = man->meta.source = NULL;
 
+       nb = n;
+
        /* ->TITLE<- MSEC DATE SOURCE VOL */
 
        n = n->child;
        /* ->TITLE<- MSEC DATE SOURCE VOL */
 
        n = n->child;
@@ -409,7 +412,7 @@ post_TH(CHKARGS)
                        /* Only warn about this once... */
                        if (isalpha((unsigned char)*p) &&
                            ! isupper((unsigned char)*p)) {
                        /* Only warn about this once... */
                        if (isalpha((unsigned char)*p) &&
                            ! isupper((unsigned char)*p)) {
-                               man_nmsg(man, n, MANDOCERR_UPPERCASE);
+                               man_nmsg(man, n, MANDOCERR_TITLE_CASE);
                                break;
                        }
                }
                                break;
                        }
                }
@@ -435,8 +438,10 @@ post_TH(CHKARGS)
                    mandoc_strdup(n->string) :
                    mandoc_normdate(man->parse, n->string,
                        n->line, n->pos);
                    mandoc_strdup(n->string) :
                    mandoc_normdate(man->parse, n->string,
                        n->line, n->pos);
-       } else
+       } else {
                man->meta.date = mandoc_strdup("");
                man->meta.date = mandoc_strdup("");
+               man_nmsg(man, n ? n : nb, MANDOCERR_DATE_MISSING);
+       }
 
        /* TITLE MSEC DATE ->SOURCE<- VOL */
 
 
        /* TITLE MSEC DATE ->SOURCE<- VOL */
 
index 5eed472736fd316f3a7271acd473887bf1e42fc6..1354e02683e9fc64269bc0b70b1db1977167a9dd 100644 (file)
--- a/mandoc.c
+++ b/mandoc.c
@@ -1,4 +1,4 @@
-/*     $Id: mandoc.c,v 1.79 2014/04/20 16:46:04 schwarze Exp $ */
+/*     $Id: mandoc.c,v 1.80 2014/06/20 17:24:00 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -509,14 +509,14 @@ mandoc_normdate(struct mparse *parse, char *in, int ln, int pos)
 
        if (NULL == in || '\0' == *in ||
            0 == strcmp(in, "$" "Mdocdate$")) {
 
        if (NULL == in || '\0' == *in ||
            0 == strcmp(in, "$" "Mdocdate$")) {
-               mandoc_msg(MANDOCERR_NODATE, parse, ln, pos, NULL);
+               mandoc_msg(MANDOCERR_DATE_MISSING, parse, ln, pos, NULL);
                time(&t);
        }
        else if (a2time(&t, "%Y-%m-%d", in))
                t = 0;
        else if (!a2time(&t, "$" "Mdocdate: %b %d %Y $", in) &&
            !a2time(&t, "%b %d, %Y", in)) {
                time(&t);
        }
        else if (a2time(&t, "%Y-%m-%d", in))
                t = 0;
        else if (!a2time(&t, "$" "Mdocdate: %b %d %Y $", in) &&
            !a2time(&t, "%b %d, %Y", in)) {
-               mandoc_msg(MANDOCERR_BADDATE, parse, ln, pos, NULL);
+               mandoc_msg(MANDOCERR_DATE_BAD, parse, ln, pos, NULL);
                t = 0;
        }
        out = t ? time2a(t) : NULL;
                t = 0;
        }
        out = t ? time2a(t) : NULL;
index ff59463916f9a9b3f0f7931c6991fcc6f80d0bfd..12cc99194ee37ce74cba8ae611710c0d66050c44 100644 (file)
--- a/mandoc.h
+++ b/mandoc.h
@@ -1,4 +1,4 @@
-/*     $Id: mandoc.h,v 1.120 2014/04/20 16:46:04 schwarze Exp $ */
+/*     $Id: mandoc.h,v 1.121 2014/06/20 17:24:00 schwarze Exp $ */
 /*
  * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
 /*
  * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -49,16 +49,16 @@ enum        mandocerr {
        MANDOCERR_WARNING, /* ===== start of warnings ===== */
 
        /* related to the prologue */
        MANDOCERR_WARNING, /* ===== start of warnings ===== */
 
        /* related to the prologue */
-       MANDOCERR_NOTITLE, /* no title in document */
-       MANDOCERR_UPPERCASE, /* document title should be all caps */
-       MANDOCERR_BADMSEC, /* unknown manual section */
-       MANDOCERR_BADVOLARCH, /* unknown manual volume or arch */
-       MANDOCERR_NODATE, /* date missing, using today's date */
-       MANDOCERR_BADDATE, /* cannot parse date, using it verbatim */
-       MANDOCERR_PROLOGOOO, /* prologue macros out of order */
-       MANDOCERR_PROLOGREP, /* duplicate prologue macro */
-       MANDOCERR_BADPROLOG, /* macro not allowed in prologue */
-       MANDOCERR_BADBODY, /* macro not allowed in body */
+       MANDOCERR_TH_MISSING, /* no TH macro in document */
+       MANDOCERR_TITLE_CASE, /* document title should be all caps */
+       MANDOCERR_MSEC_BAD, /* unknown manual section */
+       MANDOCERR_ARCH_BAD, /* unknown manual volume or arch */
+       MANDOCERR_DATE_MISSING, /* date missing, using today's date */
+       MANDOCERR_DATE_BAD, /* cannot parse date, using it verbatim */
+       MANDOCERR_PROLOG_ORDER, /* prologue macros out of order */
+       MANDOCERR_PROLOG_REP, /* duplicate prologue macro */
+       MANDOCERR_PROLOG_BAD, /* macro not allowed in prologue */
+       MANDOCERR_PROLOG_ONLY, /* macro not allowed in body */
 
        /* related to document structure */
        MANDOCERR_SO, /* .so is fragile, better use ln(1) */
 
        /* related to document structure */
        MANDOCERR_SO, /* .so is fragile, better use ln(1) */
diff --git a/mdoc.c b/mdoc.c
index c56fad41a4a8ab96cddf09562c135a0f132ecd01..38ed0612e8a35bc4f1b88a9eb698c4f6a6cf68e0 100644 (file)
--- a/mdoc.c
+++ b/mdoc.c
@@ -1,4 +1,4 @@
-/*     $Id: mdoc.c,v 1.214 2014/04/25 14:11:30 schwarze Exp $ */
+/*     $Id: mdoc.c,v 1.215 2014/06/20 17:24:00 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -305,7 +305,8 @@ mdoc_macro(MACRO_PROT_ARGS)
 
        if (MDOC_PROLOGUE & mdoc_macros[tok].flags &&
            MDOC_PBODY & mdoc->flags) {
 
        if (MDOC_PROLOGUE & mdoc_macros[tok].flags &&
            MDOC_PBODY & mdoc->flags) {
-               mdoc_pmsg(mdoc, line, ppos, MANDOCERR_BADBODY);
+               mandoc_vmsg(MANDOCERR_PROLOG_ONLY, mdoc->parse,
+                   line, ppos, "%s", mdoc_macronames[tok]);
                return(1);
        }
 
                return(1);
        }
 
@@ -313,7 +314,8 @@ mdoc_macro(MACRO_PROT_ARGS)
 
        if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) &&
             ! (MDOC_PBODY & mdoc->flags)) {
 
        if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) &&
             ! (MDOC_PBODY & mdoc->flags)) {
-               mdoc_pmsg(mdoc, line, ppos, MANDOCERR_BADPROLOG);
+               mandoc_vmsg(MANDOCERR_PROLOG_BAD, mdoc->parse,
+                   line, ppos, "%s", mdoc_macronames[tok]);
                if (NULL == mdoc->meta.msec)
                        mdoc->meta.msec = mandoc_strdup("1");
                if (NULL == mdoc->meta.title)
                if (NULL == mdoc->meta.msec)
                        mdoc->meta.msec = mandoc_strdup("1");
                if (NULL == mdoc->meta.title)
index 7cd856c661f71442f93032c8f3423b2c861e73fd..6e8ef19b7e577f8d09ec53f01b1b8fc2284224f7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_validate.c,v 1.214 2014/04/23 21:06:41 schwarze Exp $ */
+/*     $Id: mdoc_validate.c,v 1.215 2014/06/20 17:24:00 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -935,10 +935,10 @@ pre_dt(PRE_ARGS)
 {
 
        if (NULL == mdoc->meta.date || mdoc->meta.os)
 {
 
        if (NULL == mdoc->meta.date || mdoc->meta.os)
-               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGOOO);
+               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_ORDER);
 
        if (mdoc->meta.title)
 
        if (mdoc->meta.title)
-               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGREP);
+               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_REP);
 
        return(1);
 }
 
        return(1);
 }
@@ -948,10 +948,10 @@ pre_os(PRE_ARGS)
 {
 
        if (NULL == mdoc->meta.title || NULL == mdoc->meta.date)
 {
 
        if (NULL == mdoc->meta.title || NULL == mdoc->meta.date)
-               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGOOO);
+               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_ORDER);
 
        if (mdoc->meta.os)
 
        if (mdoc->meta.os)
-               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGREP);
+               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_REP);
 
        return(1);
 }
 
        return(1);
 }
@@ -961,10 +961,10 @@ pre_dd(PRE_ARGS)
 {
 
        if (mdoc->meta.title || mdoc->meta.os)
 {
 
        if (mdoc->meta.title || mdoc->meta.os)
-               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGOOO);
+               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_ORDER);
 
        if (mdoc->meta.date)
 
        if (mdoc->meta.date)
-               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGREP);
+               mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_REP);
 
        return(1);
 }
 
        return(1);
 }
@@ -2184,7 +2184,7 @@ post_dt(POST_ARGS)
                         * FIXME: don't be lazy: have this make all
                         * characters be uppercase and just warn once.
                         */
                         * FIXME: don't be lazy: have this make all
                         * characters be uppercase and just warn once.
                         */
-                       mdoc_nmsg(mdoc, nn, MANDOCERR_UPPERCASE);
+                       mdoc_nmsg(mdoc, nn, MANDOCERR_TITLE_CASE);
                        break;
                }
 
                        break;
                }
 
@@ -2228,7 +2228,7 @@ post_dt(POST_ARGS)
                mdoc->meta.vol = mandoc_strdup(cp);
                mdoc->meta.msec = mandoc_strdup(nn->string);
        } else {
                mdoc->meta.vol = mandoc_strdup(cp);
                mdoc->meta.msec = mandoc_strdup(nn->string);
        } else {
-               mdoc_nmsg(mdoc, n, MANDOCERR_BADMSEC);
+               mdoc_nmsg(mdoc, n, MANDOCERR_MSEC_BAD);
                mdoc->meta.vol = mandoc_strdup(nn->string);
                mdoc->meta.msec = mandoc_strdup(nn->string);
        }
                mdoc->meta.vol = mandoc_strdup(nn->string);
                mdoc->meta.msec = mandoc_strdup(nn->string);
        }
@@ -2250,7 +2250,7 @@ post_dt(POST_ARGS)
        } else {
                cp = mdoc_a2arch(nn->string);
                if (NULL == cp) {
        } else {
                cp = mdoc_a2arch(nn->string);
                if (NULL == cp) {
-                       mdoc_nmsg(mdoc, nn, MANDOCERR_BADVOLARCH);
+                       mdoc_nmsg(mdoc, nn, MANDOCERR_ARCH_BAD);
                        free(mdoc->meta.vol);
                        mdoc->meta.vol = mandoc_strdup(nn->string);
                } else
                        free(mdoc->meta.vol);
                        mdoc->meta.vol = mandoc_strdup(nn->string);
                } else
diff --git a/read.c b/read.c
index 959da529450d892ffe4ad8d19843f3a34aaa19e7..3c68b42dae89a5a38f026e466294e1c06f4e6c52 100644 (file)
--- a/read.c
+++ b/read.c
@@ -1,4 +1,4 @@
-/*     $Id: read.c,v 1.48 2014/04/20 22:04:04 schwarze Exp $ */
+/*     $Id: read.c,v 1.49 2014/06/20 17:24:00 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -93,7 +93,7 @@ static        const char * const      mandocerrs[MANDOCERR_MAX] = {
        "generic warning",
 
        /* related to the prologue */
        "generic warning",
 
        /* related to the prologue */
-       "no title in document",
+       "no TH macro in document",
        "document title should be all caps",
        "unknown manual section",
        "unknown manual volume or arch",
        "document title should be all caps",
        "unknown manual section",
        "unknown manual volume or arch",