=================================================================== RCS file: /cvs/mandoc/man_validate.c,v retrieving revision 1.144 retrieving revision 1.147 diff -u -p -r1.144 -r1.147 --- mandoc/man_validate.c 2018/12/31 07:08:12 1.144 +++ mandoc/man_validate.c 2019/03/11 13:21:11 1.147 @@ -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.147 2019/03/11 13:21:11 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2012-2018 Ingo Schwarze @@ -41,13 +41,15 @@ typedef void (*v_check)(CHKARGS); -static void check_abort(CHKARGS); +static __dead void check_abort(CHKARGS); 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; } } @@ -195,7 +196,7 @@ check_root(CHKARGS) "(OpenBSD)" : "(NetBSD)"); } -static void +static __dead void check_abort(CHKARGS) { abort(); @@ -206,13 +207,27 @@ check_text(CHKARGS) { char *cp, *p; - if (man->flags & ROFF_NOFILL) + if (n->flags & NODE_NOFILL) return; cp = n->string; for (p = cp; NULL != (p = strchr(p, '\t')); p++) mandoc_msg(MANDOCERR_FI_TAB, 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