=================================================================== RCS file: /cvs/mandoc/man_macro.c,v retrieving revision 1.115 retrieving revision 1.116 diff -u -p -r1.115 -r1.116 --- mandoc/man_macro.c 2017/01/10 13:47:00 1.115 +++ mandoc/man_macro.c 2017/04/24 23:06:18 1.116 @@ -1,7 +1,7 @@ -/* $Id: man_macro.c,v 1.115 2017/01/10 13:47:00 schwarze Exp $ */ +/* $Id: man_macro.c,v 1.116 2017/04/24 23:06:18 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2012, 2013, 2014, 2015 Ingo Schwarze + * Copyright (c) 2012-2015, 2017 Ingo Schwarze * Copyright (c) 2013 Franco Fichtner * * Permission to use, copy, modify, and distribute this software for any @@ -38,10 +38,9 @@ static void blk_imp(MACRO_PROT_ARGS); static void in_line_eoln(MACRO_PROT_ARGS); static int man_args(struct roff_man *, int, int *, char *, char **); -static void rew_scope(struct roff_man *, int); +static void rew_scope(struct roff_man *, enum roff_tok); -const struct man_macro __man_macros[MAN_MAX] = { - { in_line_eoln, MAN_NSCOPED }, /* br */ +const struct man_macro __man_macros[MAN_MAX - MAN_TH] = { { in_line_eoln, MAN_BSCOPE }, /* TH */ { blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* SH */ { blk_imp, MAN_BSCOPE | MAN_SCOPED }, /* SS */ @@ -62,6 +61,7 @@ const struct man_macro __man_macros[MAN_MAX] = { { in_line_eoln, MAN_SCOPED | MAN_JOIN }, /* I */ { in_line_eoln, 0 }, /* IR */ { in_line_eoln, 0 }, /* RI */ + { in_line_eoln, MAN_NSCOPED }, /* br */ { in_line_eoln, MAN_NSCOPED }, /* sp */ { in_line_eoln, MAN_NSCOPED }, /* nf */ { in_line_eoln, MAN_NSCOPED }, /* fi */ @@ -80,10 +80,9 @@ const struct man_macro __man_macros[MAN_MAX] = { { blk_close, MAN_BSCOPE }, /* UE */ { in_line_eoln, 0 }, /* ll */ }; +const struct man_macro *const man_macros = __man_macros - MAN_TH; -const struct man_macro * const man_macros = __man_macros; - void man_unscope(struct roff_man *man, const struct roff_node *to) { @@ -100,8 +99,7 @@ man_unscope(struct roff_man *man, const struct roff_no man_macros[n->tok].flags & MAN_SCOPED) { mandoc_vmsg(MANDOCERR_BLK_LINE, man->parse, n->line, n->pos, - "EOF breaks %s", - man_macronames[n->tok]); + "EOF breaks %s", roff_name[n->tok]); if (man->flags & MAN_ELINE) man->flags &= ~MAN_ELINE; else { @@ -118,7 +116,7 @@ man_unscope(struct roff_man *man, const struct roff_no man_macros[n->tok].fp == blk_exp) mandoc_msg(MANDOCERR_BLK_NOEND, man->parse, n->line, n->pos, - man_macronames[n->tok]); + roff_name[n->tok]); } /* @@ -150,7 +148,7 @@ man_unscope(struct roff_man *man, const struct roff_no * scopes. When a scope is closed, it must be validated and actioned. */ static void -rew_scope(struct roff_man *man, int tok) +rew_scope(struct roff_man *man, enum roff_tok tok) { struct roff_node *n; @@ -193,7 +191,7 @@ rew_scope(struct roff_man *man, int tok) void blk_close(MACRO_PROT_ARGS) { - int ntok; + enum roff_tok ntok; const struct roff_node *nn; char *p; int nrew, target; @@ -233,7 +231,7 @@ blk_close(MACRO_PROT_ARGS) if (nn == NULL) { mandoc_msg(MANDOCERR_BLK_NOTOPEN, man->parse, - line, ppos, man_macronames[tok]); + line, ppos, roff_name[tok]); rew_scope(man, MAN_PP); } else { line = man->last->line; @@ -266,9 +264,8 @@ blk_exp(MACRO_PROT_ARGS) roff_word_alloc(man, line, la, p); if (buf[*pos] != '\0') - mandoc_vmsg(MANDOCERR_ARG_EXCESS, - man->parse, line, *pos, "%s ... %s", - man_macronames[tok], buf + *pos); + mandoc_vmsg(MANDOCERR_ARG_EXCESS, man->parse, line, + *pos, "%s ... %s", roff_name[tok], buf + *pos); man_unscope(man, head); roff_body_alloc(man, line, ppos, tok); @@ -335,14 +332,14 @@ in_line_eoln(MACRO_PROT_ARGS) tok == MAN_fi || tok == MAN_nf)) { mandoc_vmsg(MANDOCERR_ARG_SKIP, man->parse, line, *pos, "%s %s", - man_macronames[tok], buf + *pos); + roff_name[tok], buf + *pos); break; } if (buf[*pos] != '\0' && man->last != n && (tok == MAN_PD || tok == MAN_ft || tok == MAN_sp)) { mandoc_vmsg(MANDOCERR_ARG_EXCESS, man->parse, line, *pos, "%s ... %s", - man_macronames[tok], buf + *pos); + roff_name[tok], buf + *pos); break; } la = *pos;