summaryrefslogtreecommitdiffstats
path: root/man_validate.c
diff options
context:
space:
mode:
Diffstat (limited to 'man_validate.c')
-rw-r--r--man_validate.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/man_validate.c b/man_validate.c
index 6d0c5e4d..6787d911 100644
--- a/man_validate.c
+++ b/man_validate.c
@@ -46,6 +46,7 @@ static int check_ge2(CHKARGS);
static int check_le5(CHKARGS);
static int check_par(CHKARGS);
static int check_part(CHKARGS);
+static int check_roff(CHKARGS);
static int check_root(CHKARGS);
static int check_sec(CHKARGS);
static int check_text(CHKARGS);
@@ -57,6 +58,7 @@ static v_check posts_part[] = { check_part, NULL };
static v_check posts_sec[] = { check_sec, NULL };
static v_check posts_le1[] = { check_le1, NULL };
static v_check pres_bline[] = { check_bline, NULL };
+static v_check pres_roff[] = { check_bline, check_roff, NULL };
static const struct man_valid man_valids[MAN_MAX] = {
{ NULL, posts_eq0 }, /* br */
@@ -94,6 +96,12 @@ static const struct man_valid man_valids[MAN_MAX] = {
{ NULL, posts_eq0 }, /* Sp */
{ pres_bline, posts_le1 }, /* Vb */
{ pres_bline, posts_eq0 }, /* Ve */
+ { pres_roff, NULL }, /* de */
+ { pres_roff, NULL }, /* dei */
+ { pres_roff, NULL }, /* am */
+ { pres_roff, NULL }, /* ami */
+ { pres_roff, NULL }, /* ig */
+ { NULL, NULL }, /* . */
};
@@ -284,6 +292,24 @@ check_bline(CHKARGS)
assert( ! (MAN_ELINE & m->flags));
if (MAN_BLINE & m->flags)
return(man_nerr(m, n, WLNSCOPE));
+
return(1);
}
+
+static int
+check_roff(CHKARGS)
+{
+
+ if (MAN_BLOCK != n->type)
+ return(1);
+
+ for (n = n->parent; n; n = n->parent)
+ if (MAN_de == n->tok || MAN_dei == n->tok ||
+ MAN_am == n->tok ||
+ MAN_ami == n->tok ||
+ MAN_ig == n->tok)
+ return(man_nerr(m, n, WROFFNEST));
+
+ return(1);
+}