aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/roff_validate.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2018-12-31 07:08:12 +0000
committerIngo Schwarze <schwarze@openbsd.org>2018-12-31 07:08:12 +0000
commit6833508f150b9e1131c3e4446b71833171c103f0 (patch)
tree55cb47fe86eb32db5363cbc4ba3c48a3681bb870 /roff_validate.c
parent04c844c9b370f59b5c07157eec6ba5a879b30218 (diff)
downloadmandoc-6833508f150b9e1131c3e4446b71833171c103f0.tar.gz
mandoc-6833508f150b9e1131c3e4446b71833171c103f0.tar.zst
mandoc-6833508f150b9e1131c3e4446b71833171c103f0.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 'roff_validate.c')
-rw-r--r--roff_validate.c29
1 files changed, 19 insertions, 10 deletions
diff --git a/roff_validate.c b/roff_validate.c
index d4cf6f6b..24d748b1 100644
--- a/roff_validate.c
+++ b/roff_validate.c
@@ -1,4 +1,4 @@
-/* $Id: roff_validate.c,v 1.15 2018/12/16 00:17:02 schwarze Exp $ */
+/* $Id: roff_validate.c,v 1.16 2018/12/31 07:08:12 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;