diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-09-04 09:49:46 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-09-04 09:49:46 +0000 |
commit | 2d4fe3c4403ea308c0da29fe4250e6fd94ec3108 (patch) | |
tree | 680cd9dffe4572e467264389de4c4b71d53dc109 /man_validate.c | |
parent | b9398370b0006ab2c539b0093cee758dfa1566fa (diff) | |
download | mandoc-2d4fe3c4403ea308c0da29fe4250e6fd94ec3108.tar.gz |
Teach -man that a literal context should be closed by SS/SH in the
backend (the front-end already accomodated for this). Found indirectly
from a question by Brad Smith.
Diffstat (limited to 'man_validate.c')
-rw-r--r-- | man_validate.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/man_validate.c b/man_validate.c index 8d61d303..39380fa3 100644 --- a/man_validate.c +++ b/man_validate.c @@ -46,42 +46,44 @@ struct man_valid { static int check_bline(CHKARGS); static int check_eq0(CHKARGS); -static int check_ft(CHKARGS); static int check_le1(CHKARGS); static int check_ge2(CHKARGS); static int check_le5(CHKARGS); static int check_par(CHKARGS); static int check_part(CHKARGS); static int check_root(CHKARGS); -static int check_sec(CHKARGS); static void check_text(CHKARGS); static int post_AT(CHKARGS); static int post_vs(CHKARGS); static int post_fi(CHKARGS); +static int post_ft(CHKARGS); static int post_nf(CHKARGS); +static int post_sec(CHKARGS); static int post_TH(CHKARGS); static int post_UC(CHKARGS); +static int pre_sec(CHKARGS); static v_check posts_at[] = { post_AT, NULL }; static v_check posts_br[] = { post_vs, check_eq0, NULL }; static v_check posts_eq0[] = { check_eq0, NULL }; static v_check posts_fi[] = { check_eq0, post_fi, NULL }; -static v_check posts_ft[] = { check_ft, NULL }; +static v_check posts_ft[] = { post_ft, NULL }; static v_check posts_nf[] = { check_eq0, post_nf, NULL }; static v_check posts_par[] = { check_par, NULL }; static v_check posts_part[] = { check_part, NULL }; -static v_check posts_sec[] = { check_sec, NULL }; +static v_check posts_sec[] = { post_sec, NULL }; static v_check posts_sp[] = { post_vs, check_le1, NULL }; static v_check posts_th[] = { check_ge2, check_le5, post_TH, NULL }; static v_check posts_uc[] = { post_UC, NULL }; static v_check pres_bline[] = { check_bline, NULL }; +static v_check pres_sec[] = { check_bline, pre_sec, NULL}; static const struct man_valid man_valids[MAN_MAX] = { { NULL, posts_br }, /* br */ { pres_bline, posts_th }, /* TH */ - { pres_bline, posts_sec }, /* SH */ - { pres_bline, posts_sec }, /* SS */ + { pres_sec, posts_sec }, /* SH */ + { pres_sec, posts_sec }, /* SS */ { pres_bline, NULL }, /* TP */ { pres_bline, posts_par }, /* LP */ { pres_bline, posts_par }, /* PP */ @@ -237,7 +239,7 @@ INEQ_DEFINE(2, >=, ge2) INEQ_DEFINE(5, <=, le5) static int -check_ft(CHKARGS) +post_ft(CHKARGS) { char *cp; int ok; @@ -293,7 +295,16 @@ check_ft(CHKARGS) } static int -check_sec(CHKARGS) +pre_sec(CHKARGS) +{ + + if (MAN_BLOCK == n->type) + m->flags &= ~MAN_LITERAL; + return(1); +} + +static int +post_sec(CHKARGS) { if ( ! (MAN_HEAD == n->type && 0 == n->nchild)) @@ -303,7 +314,6 @@ check_sec(CHKARGS) return(0); } - static int check_part(CHKARGS) { |