From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]); by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id 13a21105; for ; Fri, 20 Mar 2015 07:54:52 -0500 (EST) Date: Fri, 20 Mar 2015 07:54:52 -0500 (EST) Message-Id: <645851159812664303.enqueue@fantadrom.bsd.lv> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: Simplify by almost halving the number of macro flags: 1. X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- 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. Modified Files: -------------- mdocml: libman.h man_macro.c Revision Data ------------- Index: man_macro.c =================================================================== RCS file: /home/cvs/mdocml/mdocml/man_macro.c,v retrieving revision 1.98 retrieving revision 1.99 diff -Lman_macro.c -Lman_macro.c -u -p -r1.98 -r1.99 --- man_macro.c +++ man_macro.c @@ -55,7 +55,7 @@ const struct man_macro __man_macros[MAN_ { 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_ { 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_ { 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 struc 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 /* 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); } Index: libman.h =================================================================== RCS file: /home/cvs/mdocml/mdocml/libman.h,v retrieving revision 1.67 retrieving revision 1.68 diff -Llibman.h -Llibman.h -u -p -r1.67 -r1.68 --- libman.h +++ libman.h @@ -1,7 +1,7 @@ /* $Id$ */ /* * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2014 Ingo Schwarze + * Copyright (c) 2014, 2015 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -47,13 +47,10 @@ struct man { struct man_macro { void (*fp)(MACRO_PROT_ARGS); int flags; -#define MAN_SCOPED (1 << 0) -#define MAN_EXPLICIT (1 << 1) /* See blk_imp(). */ -#define MAN_FSCOPED (1 << 2) /* See blk_imp(). */ -#define MAN_NSCOPED (1 << 3) /* See in_line_eoln(). */ -#define MAN_NOCLOSE (1 << 4) /* See blk_exp(). */ -#define MAN_BSCOPE (1 << 5) /* Break BLINE scope. */ -#define MAN_JOIN (1 << 6) /* Join arguments together. */ +#define MAN_SCOPED (1 << 0) /* Optional next-line scope. */ +#define MAN_NSCOPED (1 << 1) /* Allowed in next-line element scope. */ +#define MAN_BSCOPE (1 << 2) /* Break next-line block scope. */ +#define MAN_JOIN (1 << 3) /* Join arguments together. */ }; extern const struct man_macro *const man_macros; -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv