diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2015-03-20 12:54:22 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2015-03-20 12:54:22 +0000 |
commit | ca2b86ab7c888a1b23d33d89f93e14dc1e100cdf (patch) | |
tree | 954f939b7931ca9f1805ca7aa3a8c1746a089498 /man_macro.c | |
parent | 4fb7e3d9ad7a8ae4549895e2a3f8cf8504d9e5ce (diff) | |
download | mandoc-ca2b86ab7c888a1b23d33d89f93e14dc1e100cdf.tar.gz |
Simplify by almost halving the number of macro flags:
1. MAN_EXPLICIT was used iff fp == blk_exp, so just test fp.
2. MAN_FSCOPED was used only for TP, so just test for TP.
3. MAN_NOCLOSE was completely unused.
No functional change.
Diffstat (limited to 'man_macro.c')
-rw-r--r-- | man_macro.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/man_macro.c b/man_macro.c index dcfd2dc3..5e30a289 100644 --- a/man_macro.c +++ b/man_macro.c @@ -55,7 +55,7 @@ const struct man_macro __man_macros[MAN_MAX] = { { in_line_eoln, MAN_BSCOPE }, /* TH */ { blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* SH */ { blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* SS */ - { blk_imp, MAN_BSCOPE | MAN_SCOPED | MAN_FSCOPED }, /* TP */ + { blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* TP */ { blk_imp, MAN_BSCOPE }, /* LP */ { blk_imp, MAN_BSCOPE }, /* PP */ { blk_imp, MAN_BSCOPE }, /* P */ @@ -76,7 +76,7 @@ const struct man_macro __man_macros[MAN_MAX] = { { in_line_eoln, MAN_BSCOPE }, /* nf */ { in_line_eoln, MAN_BSCOPE }, /* fi */ { blk_close, MAN_BSCOPE }, /* RE */ - { blk_exp, MAN_BSCOPE | MAN_EXPLICIT }, /* RS */ + { blk_exp, MAN_BSCOPE }, /* RS */ { in_line_eoln, 0 }, /* DT */ { in_line_eoln, 0 }, /* UC */ { in_line_eoln, 0 }, /* PD */ @@ -86,7 +86,7 @@ const struct man_macro __man_macros[MAN_MAX] = { { in_line_eoln, 0 }, /* OP */ { in_line_eoln, MAN_BSCOPE }, /* EX */ { in_line_eoln, MAN_BSCOPE }, /* EE */ - { blk_exp, MAN_BSCOPE | MAN_EXPLICIT }, /* UR */ + { blk_exp, MAN_BSCOPE }, /* UR */ { blk_close, MAN_BSCOPE }, /* UE */ { in_line_eoln, 0 }, /* ll */ }; @@ -125,7 +125,7 @@ man_unscope(struct man *man, const struct man_node *to) continue; } if (n->type == MAN_BLOCK && - man_macros[n->tok].flags & MAN_EXPLICIT) + man_macros[n->tok].fp == blk_exp) mandoc_msg(MANDOCERR_BLK_NOEND, man->parse, n->line, n->pos, man_macronames[n->tok]); @@ -190,7 +190,7 @@ rew_dohalt(enum mant tok, enum man_type type, const struct man_node *n) /* First: rewind to ourselves. */ if (type == n->type && tok == n->tok) { - if (MAN_EXPLICIT & man_macros[n->tok].flags) + if (man_macros[n->tok].fp == blk_exp) return(REW_HALT); else return(REW_REWIND); @@ -387,18 +387,20 @@ blk_imp(MACRO_PROT_ARGS) man_word_alloc(man, line, la, p); } - /* Close out head and open body (unless MAN_SCOPE). */ + /* + * For macros having optional next-line scope, + * keep the head open if there were no arguments. + * For `TP', always keep the head open. + */ - if (man_macros[tok].flags & MAN_SCOPED) { - /* If we're forcing scope (`TP'), keep it open. */ - if (man_macros[tok].flags & MAN_FSCOPED) { - man->flags |= MAN_BLINE; - return; - } else if (n == man->last) { - man->flags |= MAN_BLINE; - return; - } + if (man_macros[tok].flags & MAN_SCOPED && + (tok == MAN_TP || n == man->last)) { + man->flags |= MAN_BLINE; + return; } + + /* Close out the head and open the body. */ + rew_scope(MAN_HEAD, man, tok); man_body_alloc(man, line, ppos, tok); } |