]> git.cameronkatri.com Git - mandoc.git/blobdiff - man_validate.c
delete trailing whitespace and space-tab sequences; no code change;
[mandoc.git] / man_validate.c
index 208b7d241ff2b8c996ff727781a756967c7e7e1c..0aa550bd08d97b5335f4edd6358478adcf364cf3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_validate.c,v 1.144 2018/12/31 07:08:12 schwarze Exp $ */
+/*     $Id: man_validate.c,v 1.149 2019/06/27 15:07:30 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2012-2018 Ingo Schwarze <schwarze@openbsd.org>
 
 typedef        void    (*v_check)(CHKARGS);
 
-static void      check_abort(CHKARGS);
+static void      check_abort(CHKARGS) __attribute__((__noreturn__));
 static void      check_par(CHKARGS);
 static void      check_part(CHKARGS);
 static void      check_root(CHKARGS);
 static void      check_text(CHKARGS);
 
 static void      post_AT(CHKARGS);
+static void      post_EE(CHKARGS);
+static void      post_EX(CHKARGS);
 static void      post_IP(CHKARGS);
 static void      post_OP(CHKARGS);
 static void      post_SH(CHKARGS);
@@ -88,8 +90,8 @@ static        const v_check man_valids[MAN_MAX - MAN_TH] = {
        NULL,       /* SY */
        NULL,       /* YS */
        post_OP,    /* OP */
-       NULL,       /* EX */
-       NULL,       /* EE */
+       post_EX,    /* EX */
+       post_EE,    /* EE */
        post_UR,    /* UR */
        NULL,       /* UE */
        post_UR,    /* MT */
@@ -151,7 +153,6 @@ man_validate(struct roff_man *man)
        default:
                if (n->tok < ROFF_MAX) {
                        roff_validate(man);
-                       man_state(man, n);
                        break;
                }
                assert(n->tok >= MAN_TH && n->tok < MAN_MAX);
@@ -159,7 +160,7 @@ man_validate(struct roff_man *man)
                if (*cp)
                        (*cp)(man, n);
                if (man->last == n)
-                       man_state(man, n);
+                       n->flags |= NODE_VALID;
                break;
        }
 }
@@ -184,8 +185,7 @@ check_root(CHKARGS)
 
                man->meta.title = mandoc_strdup("");
                man->meta.msec = mandoc_strdup("");
-               man->meta.date = man->quick ? mandoc_strdup("") :
-                   mandoc_normdate(man, NULL, n->line, n->pos);
+               man->meta.date = mandoc_normdate(man, NULL, n->line, n->pos);
        }
 
        if (man->meta.os_e &&
@@ -206,7 +206,7 @@ check_text(CHKARGS)
 {
        char            *cp, *p;
 
-       if (man->flags & ROFF_NOFILL)
+       if (n->flags & NODE_NOFILL)
                return;
 
        cp = n->string;
@@ -215,6 +215,20 @@ check_text(CHKARGS)
                    n->line, n->pos + (int)(p - cp), NULL);
 }
 
+static void
+post_EE(CHKARGS)
+{
+       if ((n->flags & NODE_NOFILL) == 0)
+               mandoc_msg(MANDOCERR_FI_SKIP, n->line, n->pos, "EE");
+}
+
+static void
+post_EX(CHKARGS)
+{
+       if (n->flags & NODE_NOFILL)
+               mandoc_msg(MANDOCERR_NF_SKIP, n->line, n->pos, "EX");
+}
+
 static void
 post_OP(CHKARGS)
 {
@@ -354,8 +368,8 @@ post_TH(CHKARGS)
        /* ->TITLE<- MSEC DATE OS VOL */
 
        n = n->child;
-       if (n && n->string) {
-               for (p = n->string; '\0' != *p; p++) {
+       if (n != NULL && n->string != NULL) {
+               for (p = n->string; *p != '\0'; p++) {
                        /* Only warn about this once... */
                        if (isalpha((unsigned char)*p) &&
                            ! isupper((unsigned char)*p)) {
@@ -373,9 +387,9 @@ post_TH(CHKARGS)
 
        /* TITLE ->MSEC<- DATE OS VOL */
 
-       if (n)
+       if (n != NULL)
                n = n->next;
-       if (n && n->string)
+       if (n != NULL && n->string != NULL)
                man->meta.msec = mandoc_strdup(n->string);
        else {
                man->meta.msec = mandoc_strdup("");
@@ -385,17 +399,16 @@ post_TH(CHKARGS)
 
        /* TITLE MSEC ->DATE<- OS VOL */
 
-       if (n)
+       if (n != NULL)
                n = n->next;
-       if (n && n->string && '\0' != n->string[0]) {
-               man->meta.date = man->quick ?
-                   mandoc_strdup(n->string) :
-                   mandoc_normdate(man, n->string, n->line, n->pos);
-       } else {
+       if (n != NULL && n->string != NULL && n->string[0] != '\0')
+               man->meta.date = mandoc_normdate(man,
+                   n->string, n->line, n->pos);
+       else {
                man->meta.date = mandoc_strdup("");
                mandoc_msg(MANDOCERR_DATE_MISSING,
-                   n ? n->line : nb->line,
-                   n ? n->pos : nb->pos, "TH");
+                   n == NULL ? nb->line : n->line,
+                   n == NULL ? nb->pos : n->pos, "TH");
        }
 
        /* TITLE MSEC DATE ->OS<- VOL */