summaryrefslogtreecommitdiffstats
path: root/usr.bin/mandoc/roff_validate.c
diff options
context:
space:
mode:
authorschwarze <schwarze@openbsd.org>2018-12-31 07:07:43 +0000
committerschwarze <schwarze@openbsd.org>2018-12-31 07:07:43 +0000
commit0438bfdfcae122aef2b2c9bf277771593bd904fc (patch)
treebf15bb27e16b8fe367af135c222fca3cd80d7a1f /usr.bin/mandoc/roff_validate.c
parentCleanup, minus 15 LOC, no functional change: (diff)
downloadwireguard-openbsd-0438bfdfcae122aef2b2c9bf277771593bd904fc.tar.xz
wireguard-openbsd-0438bfdfcae122aef2b2c9bf277771593bd904fc.zip
Move parsing of the .nf and .fi (fill mode) requests from the man(7)
parser to the roff(7) parser. As a side effect, .nf and .fi are now also parsed in mdoc(7) input, though the mdoc(7) formatters still ignore most of their effect.
Diffstat (limited to 'usr.bin/mandoc/roff_validate.c')
-rw-r--r--usr.bin/mandoc/roff_validate.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/usr.bin/mandoc/roff_validate.c b/usr.bin/mandoc/roff_validate.c
index 839d42c7ed9..3cb595e90b8 100644
--- a/usr.bin/mandoc/roff_validate.c
+++ b/usr.bin/mandoc/roff_validate.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: roff_validate.c,v 1.15 2018/12/15 23:33:20 schwarze Exp $ */
+/* $OpenBSD: roff_validate.c,v 1.16 2018/12/31 07:07:43 schwarze Exp $ */
/*
* Copyright (c) 2010, 2017, 2018 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -30,15 +30,19 @@
typedef void (*roff_valid_fp)(ROFF_VALID_ARGS);
static void roff_valid_br(ROFF_VALID_ARGS);
+static void roff_valid_fi(ROFF_VALID_ARGS);
static void roff_valid_ft(ROFF_VALID_ARGS);
+static void roff_valid_nf(ROFF_VALID_ARGS);
static void roff_valid_sp(ROFF_VALID_ARGS);
static const roff_valid_fp roff_valids[ROFF_MAX] = {
roff_valid_br, /* br */
NULL, /* ce */
+ roff_valid_fi, /* fi */
roff_valid_ft, /* ft */
NULL, /* ll */
NULL, /* mc */
+ roff_valid_nf, /* nf */
NULL, /* po */
NULL, /* rj */
roff_valid_sp, /* sp */
@@ -63,10 +67,6 @@ roff_valid_br(ROFF_VALID_ARGS)
{
struct roff_node *np;
- if (n->child != NULL)
- mandoc_msg(MANDOCERR_ARG_SKIP,
- n->line, n->pos, "br %s", n->child->string);
-
if (n->next != NULL && n->next->type == ROFFT_TEXT &&
*n->next->string == ' ') {
mandoc_msg(MANDOCERR_PAR_SKIP, n->line, n->pos,
@@ -92,6 +92,13 @@ roff_valid_br(ROFF_VALID_ARGS)
}
static void
+roff_valid_fi(ROFF_VALID_ARGS)
+{
+ if ((man->flags & ROFF_NOFILL) == 0)
+ mandoc_msg(MANDOCERR_FI_SKIP, n->line, n->pos, "fi");
+}
+
+static void
roff_valid_ft(ROFF_VALID_ARGS)
{
const char *cp;
@@ -111,15 +118,17 @@ roff_valid_ft(ROFF_VALID_ARGS)
}
static void
+roff_valid_nf(ROFF_VALID_ARGS)
+{
+ if (man->flags & ROFF_NOFILL)
+ mandoc_msg(MANDOCERR_NF_SKIP, n->line, n->pos, "nf");
+}
+
+static void
roff_valid_sp(ROFF_VALID_ARGS)
{
struct roff_node *np;
- if (n->child != NULL && n->child->next != NULL)
- mandoc_msg(MANDOCERR_ARG_EXCESS,
- n->child->next->line, n->child->next->pos,
- "sp ... %s", n->child->next->string);
-
if ((np = n->prev) == NULL)
return;