aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2018-12-31 08:38:21 +0000
committerIngo Schwarze <schwarze@openbsd.org>2018-12-31 08:38:21 +0000
commit53029bcbfbab6179bd9e52c6d23fca731cf598d8 (patch)
tree991bb09a1c3db1c7c40697cdbd91e2d498aef430
parent6f05a74d1a074bf18303e8d7c95cad567e72e2ea (diff)
downloadmandoc-53029bcbfbab6179bd9e52c6d23fca731cf598d8.tar.gz
mandoc-53029bcbfbab6179bd9e52c6d23fca731cf598d8.tar.zst
mandoc-53029bcbfbab6179bd9e52c6d23fca731cf598d8.zip
Use the new flag NODE_NOFILL in the validators, which is sometimes
simpler and always more robust. In particular, move the nesting warnings for .EX and .EE from man_state(), where they were misplaced, to the man(7) validator.
-rw-r--r--man.c7
-rw-r--r--man_validate.c24
-rw-r--r--mdoc_validate.c8
-rw-r--r--roff_validate.c4
4 files changed, 26 insertions, 17 deletions
diff --git a/man.c b/man.c
index a7c8004d..93f64415 100644
--- a/man.c
+++ b/man.c
@@ -1,4 +1,4 @@
-/* $Id: man.c,v 1.184 2018/12/31 07:08:12 schwarze Exp $ */
+/* $Id: man.c,v 1.185 2018/12/31 08:38:21 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2013,2014,2015,2017,2018 Ingo Schwarze <schwarze@openbsd.org>
@@ -351,15 +351,10 @@ man_state(struct roff_man *man, struct roff_node *n)
switch(n->tok) {
case ROFF_nf:
case MAN_EX:
- if (man->flags & ROFF_NOFILL && (n->flags & NODE_VALID) == 0)
- mandoc_msg(MANDOCERR_NF_SKIP, n->line, n->pos, "nf");
man->flags |= ROFF_NOFILL;
break;
case ROFF_fi:
case MAN_EE:
- if ( (man->flags & ROFF_NOFILL) == 0 &&
- ! (n->flags & NODE_VALID))
- mandoc_msg(MANDOCERR_FI_SKIP, n->line, n->pos, "fi");
man->flags &= ~ROFF_NOFILL;
break;
default:
diff --git a/man_validate.c b/man_validate.c
index 208b7d24..253aca35 100644
--- a/man_validate.c
+++ b/man_validate.c
@@ -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.145 2018/12/31 08:38:21 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);
@@ -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 */
@@ -206,7 +208,7 @@ check_text(CHKARGS)
{
char *cp, *p;
- if (man->flags & ROFF_NOFILL)
+ if (n->flags & NODE_NOFILL)
return;
cp = n->string;
@@ -216,6 +218,20 @@ check_text(CHKARGS)
}
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)
{
diff --git a/mdoc_validate.c b/mdoc_validate.c
index d20b2a07..bd697e54 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_validate.c,v 1.368 2018/12/31 07:46:07 schwarze Exp $ */
+/* $Id: mdoc_validate.c,v 1.369 2018/12/31 08:38:21 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2018 Ingo Schwarze <schwarze@openbsd.org>
@@ -336,9 +336,7 @@ mdoc_validate(struct roff_man *mdoc)
if (n->sec != SEC_SYNOPSIS ||
(np->tok != MDOC_Cd && np->tok != MDOC_Fd))
check_text(mdoc, n->line, n->pos, n->string);
- if (np->tok != MDOC_Ql && np->tok != MDOC_Dl &&
- (np->tok != MDOC_Bd ||
- (mdoc->flags & ROFF_NOFILL) == 0) &&
+ if ((n->flags & NODE_NOFILL) == 0 &&
(np->tok != MDOC_It || np->type != ROFFT_HEAD ||
np->parent->parent->norm->Bl.type != LIST_diag))
check_text_em(mdoc, n->line, n->pos, n->string);
@@ -411,7 +409,7 @@ check_text(struct roff_man *mdoc, int ln, int pos, char *p)
{
char *cp;
- if (mdoc->flags & ROFF_NOFILL)
+ if (mdoc->last->flags & NODE_NOFILL)
return;
for (cp = p; NULL != (p = strchr(p, '\t')); p++)
diff --git a/roff_validate.c b/roff_validate.c
index 24d748b1..8d964333 100644
--- a/roff_validate.c
+++ b/roff_validate.c
@@ -1,4 +1,4 @@
-/* $Id: roff_validate.c,v 1.16 2018/12/31 07:08:12 schwarze Exp $ */
+/* $Id: roff_validate.c,v 1.17 2018/12/31 08:38:21 schwarze Exp $ */
/*
* Copyright (c) 2010, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -94,7 +94,7 @@ roff_valid_br(ROFF_VALID_ARGS)
static void
roff_valid_fi(ROFF_VALID_ARGS)
{
- if ((man->flags & ROFF_NOFILL) == 0)
+ if ((n->flags & NODE_NOFILL) == 0)
mandoc_msg(MANDOCERR_FI_SKIP, n->line, n->pos, "fi");
}