]> git.cameronkatri.com Git - mandoc.git/blobdiff - man_validate.c
Since resetting of offsets works quite differently in man(7) and mdoc(7),
[mandoc.git] / man_validate.c
index cfe6bc8b121c05a23a982918c444a210f580b2ae..4bfaf764e6c8c542efad2d0960eeb99d5e85e019 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_validate.c,v 1.142 2018/12/16 00:21:05 schwarze Exp $ */
+/*     $Id: man_validate.c,v 1.146 2018/12/31 10:04:39 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2012-2018 Ingo Schwarze <schwarze@openbsd.org>
@@ -48,6 +48,8 @@ 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);
@@ -78,8 +80,6 @@ static        const v_check man_valids[MAN_MAX - MAN_TH] = {
        NULL,       /* I */
        NULL,       /* IR */
        NULL,       /* RI */
-       NULL,       /* nf */
-       NULL,       /* fi */
        NULL,       /* RE */
        check_part, /* RS */
        NULL,       /* DT */
@@ -90,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 */
@@ -101,7 +101,7 @@ static      const v_check man_valids[MAN_MAX - MAN_TH] = {
 
 /* Validate the subtree rooted at man->last. */
 void
-man_node_validate(struct roff_man *man)
+man_validate(struct roff_man *man)
 {
        struct roff_node *n;
        const v_check    *cp;
@@ -128,7 +128,7 @@ man_node_validate(struct roff_man *man)
 
        man->last = man->last->child;
        while (man->last != NULL) {
-               man_node_validate(man);
+               man_validate(man);
                if (man->last == n)
                        man->last = man->last->child;
                else
@@ -160,7 +160,7 @@ man_node_validate(struct roff_man *man)
                if (*cp)
                        (*cp)(man, n);
                if (man->last == n)
-                       man_state(man, n);
+                       n->flags |= NODE_VALID;
                break;
        }
 }
@@ -207,7 +207,7 @@ check_text(CHKARGS)
 {
        char            *cp, *p;
 
-       if (MAN_LITERAL & man->flags)
+       if (n->flags & NODE_NOFILL)
                return;
 
        cp = n->string;
@@ -216,6 +216,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)
 {