]> git.cameronkatri.com Git - mandoc.git/blobdiff - man_validate.c
Clean up warnings related to macros and nesting.
[mandoc.git] / man_validate.c
index 5daaa460242e01ac7283c98ff9d244e6780e9f75..61f8ef811a4fefd9dde18e72d3e36d31ac419375 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.96 2014/07/02 11:43:20 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -198,11 +198,13 @@ check_root(CHKARGS)
        man->flags &= ~MAN_BLINE;
        man->flags &= ~MAN_ELINE;
 
-       if (NULL == man->first->child) {
-               man_nmsg(man, n, MANDOCERR_NODOCBODY);
-               return(0);
-       } else if (NULL == man->meta.title) {
-               man_nmsg(man, n, MANDOCERR_NOTITLE);
+       if (NULL == man->first->child)
+               man_nmsg(man, n, MANDOCERR_DOC_EMPTY);
+       else
+               man->meta.hasbody = 1;
+
+       if (NULL == man->meta.title) {
+               man_nmsg(man, n, MANDOCERR_TH_MISSING);
 
                /*
                 * If a title hasn't been set, do so now (by
@@ -355,7 +357,9 @@ check_par(CHKARGS)
                break;
        case MAN_BODY:
                if (0 == n->nchild)
-                       man_nmsg(man, n, MANDOCERR_IGNPAR);
+                       mandoc_vmsg(MANDOCERR_PAR_SKIP,
+                           man->parse, n->line, n->pos,
+                           "%s empty", man_macronames[n->tok]);
                break;
        case MAN_HEAD:
                if (n->nchild)
@@ -379,7 +383,9 @@ post_IP(CHKARGS)
                break;
        case MAN_BODY:
                if (0 == n->parent->head->nchild && 0 == n->nchild)
-                       man_nmsg(man, n, MANDOCERR_IGNPAR);
+                       mandoc_vmsg(MANDOCERR_PAR_SKIP,
+                           man->parse, n->line, n->pos,
+                           "%s empty", man_macronames[n->tok]);
                break;
        default:
                break;
@@ -390,6 +396,7 @@ post_IP(CHKARGS)
 static int
 post_TH(CHKARGS)
 {
+       struct man_node *nb;
        const char      *p;
 
        free(man->meta.title);
@@ -401,6 +408,8 @@ post_TH(CHKARGS)
        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;
@@ -409,7 +418,10 @@ post_TH(CHKARGS)
                        /* Only warn about this once... */
                        if (isalpha((unsigned char)*p) &&
                            ! isupper((unsigned char)*p)) {
-                               man_nmsg(man, n, MANDOCERR_UPPERCASE);
+                               mandoc_msg(MANDOCERR_TITLE_CASE,
+                                   man->parse, n->line,
+                                   n->pos + (p - n->string),
+                                   n->string);
                                break;
                        }
                }
@@ -435,8 +447,10 @@ post_TH(CHKARGS)
                    mandoc_strdup(n->string) :
                    mandoc_normdate(man->parse, n->string,
                        n->line, n->pos);
-       } else
+       } else {
                man->meta.date = mandoc_strdup("");
+               man_nmsg(man, n ? n : nb, MANDOCERR_DATE_MISSING);
+       }
 
        /* TITLE MSEC DATE ->SOURCE<- VOL */
 
@@ -465,7 +479,7 @@ post_nf(CHKARGS)
 {
 
        if (MAN_LITERAL & man->flags)
-               man_nmsg(man, n, MANDOCERR_SCOPEREP);
+               man_nmsg(man, n, MANDOCERR_NF_SKIP);
 
        man->flags |= MAN_LITERAL;
        return(1);
@@ -476,7 +490,7 @@ post_fi(CHKARGS)
 {
 
        if ( ! (MAN_LITERAL & man->flags))
-               man_nmsg(man, n, MANDOCERR_WNOSCOPE);
+               man_nmsg(man, n, MANDOCERR_FI_SKIP);
 
        man->flags &= ~MAN_LITERAL;
        return(1);
@@ -569,7 +583,9 @@ post_vs(CHKARGS)
        case MAN_SH:
                /* FALLTHROUGH */
        case MAN_SS:
-               man_nmsg(man, n, MANDOCERR_IGNPAR);
+               mandoc_vmsg(MANDOCERR_PAR_SKIP, man->parse, n->line, n->pos,
+                   "%s after %s", man_macronames[n->tok],
+                   man_macronames[n->parent->tok]);
                /* FALLTHROUGH */
        case MAN_MAX:
                /*