]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc_validate.c
Lint fixes (type-safety for enums via -cefuh).
[mandoc.git] / mdoc_validate.c
index a60a5e99cb854515a9f4940028a71fa0c4bf2935..b442293ca44a08a684d47900f036f6963d4d162a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_validate.c,v 1.64 2010/04/06 11:28:17 kristaps Exp $ */
+/*     $Id: mdoc_validate.c,v 1.70 2010/05/08 07:30:19 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -77,6 +77,7 @@ static        int      ewarn_ge1(POST_ARGS);
 static int      herr_eq0(POST_ARGS);
 static int      herr_ge1(POST_ARGS);
 static int      hwarn_eq1(POST_ARGS);
+static int      hwarn_eq0(POST_ARGS);
 static int      hwarn_le1(POST_ARGS);
 
 static int      post_an(POST_ARGS);
@@ -97,11 +98,9 @@ static       int      post_vt(POST_ARGS);
 static int      pre_an(PRE_ARGS);
 static int      pre_bd(PRE_ARGS);
 static int      pre_bl(PRE_ARGS);
-static int      pre_cd(PRE_ARGS);
 static int      pre_dd(PRE_ARGS);
 static int      pre_display(PRE_ARGS);
 static int      pre_dt(PRE_ARGS);
-static int      pre_er(PRE_ARGS);
 static int      pre_ex(PRE_ARGS);
 static int      pre_fd(PRE_ARGS);
 static int      pre_it(PRE_ARGS);
@@ -113,7 +112,7 @@ static      int      pre_ss(PRE_ARGS);
 
 static v_post   posts_an[] = { post_an, NULL };
 static v_post   posts_at[] = { post_at, NULL };
-static v_post   posts_bd[] = { herr_eq0, bwarn_ge1, NULL };
+static v_post   posts_bd[] = { hwarn_eq0, bwarn_ge1, NULL };
 static v_post   posts_bf[] = { hwarn_le1, post_bf, NULL };
 static v_post   posts_bl[] = { bwarn_ge1, post_bl, NULL };
 static v_post   posts_bool[] = { eerr_eq1, ebool, NULL };
@@ -137,11 +136,10 @@ static    v_post   posts_xr[] = { ewarn_ge1, NULL };
 static v_pre    pres_an[] = { pre_an, NULL };
 static v_pre    pres_bd[] = { pre_display, pre_bd, NULL };
 static v_pre    pres_bl[] = { pre_bl, NULL };
-static v_pre    pres_cd[] = { pre_cd, NULL };
 static v_pre    pres_d1[] = { pre_display, NULL };
 static v_pre    pres_dd[] = { pre_dd, NULL };
 static v_pre    pres_dt[] = { pre_dt, NULL };
-static v_pre    pres_er[] = { pre_er, NULL };
+static v_pre    pres_er[] = { NULL, NULL };
 static v_pre    pres_ex[] = { pre_ex, NULL };
 static v_pre    pres_fd[] = { pre_fd, NULL };
 static v_pre    pres_it[] = { pre_it, NULL };
@@ -169,7 +167,7 @@ const       struct valids mdoc_valids[MDOC_MAX] = {
        { NULL, posts_text },                   /* Ad */ 
        { pres_an, posts_an },                  /* An */ 
        { NULL, NULL },                         /* Ar */
-       { pres_cd, posts_text },                /* Cd */ 
+       { NULL, posts_text },                   /* Cd */ 
        { NULL, NULL },                         /* Cm */
        { NULL, NULL },                         /* Dv */ 
        { pres_er, posts_text },                /* Er */ 
@@ -414,6 +412,7 @@ CHECK_HEAD_DEFN(eq0, err, err_child_eq, 0)  /* herr_eq0() */
 CHECK_HEAD_DEFN(le1, warn, warn_child_lt, 2)   /* hwarn_le1() */
 CHECK_HEAD_DEFN(ge1, err, err_child_gt, 0)     /* herr_ge1() */
 CHECK_HEAD_DEFN(eq1, warn, warn_child_eq, 1)   /* hwarn_eq1() */
+CHECK_HEAD_DEFN(eq0, warn, warn_child_eq, 0)   /* hwarn_eq0() */
 
 
 static int
@@ -748,7 +747,7 @@ pre_sh(PRE_ARGS)
 
        if (MDOC_BLOCK != n->type)
                return(1);
-       return(check_parent(mdoc, n, -1, MDOC_ROOT));
+       return(check_parent(mdoc, n, MDOC_MAX, MDOC_ROOT));
 }
 
 
@@ -785,8 +784,6 @@ static int
 pre_rv(PRE_ARGS)
 {
 
-       if ( ! check_msec(mdoc, n, 2, 3, 0))
-               return(0);
        return(check_stdarg(mdoc, n));
 }
 
@@ -801,22 +798,6 @@ pre_ex(PRE_ARGS)
 }
 
 
-static int
-pre_er(PRE_ARGS)
-{
-
-       return(check_msec(mdoc, n, 2, 3, 9, 0));
-}
-
-
-static int
-pre_cd(PRE_ARGS)
-{
-
-       return(check_msec(mdoc, n, 4, 0));
-}
-
-
 static int
 pre_dt(PRE_ARGS)
 {
@@ -1095,22 +1076,23 @@ post_bl_head(POST_ARGS)
 {
        int                     i;
        const struct mdoc_node *n;
+       const struct mdoc_argv *a;
 
        n = mdoc->last->parent;
        assert(n->args);
 
-       for (i = 0; i < (int)n->args->argc; i++)
-               if (n->args->argv[i].arg == MDOC_Column)
-                       break;
-
-       if (i == (int)n->args->argc && n->nchild)
-               return(warn_count(mdoc, "==", 0, 
-                               "line arguments", n->nchild));
-
-       if (n->args->argv[i].sz && mdoc->last->child)
-               return(mdoc_nerr(mdoc, n, ECOLMIS));
+       for (i = 0; i < (int)n->args->argc; i++) {
+               a = &n->args->argv[i];
+               if (a->arg == MDOC_Column) {
+                       if (a->sz && mdoc->last->nchild)
+                               return(mdoc_nerr(mdoc, n, ECOLMIS));
+                       return(1);
+               }
+       }
 
-       return(1);
+       if (0 == (i = mdoc->last->nchild))
+               return(1);
+       return(warn_count(mdoc, "==", 0, "line arguments", i));
 }