]> git.cameronkatri.com Git - mandoc.git/commitdiff
Simplify by almost halving the number of macro flags:
authorIngo Schwarze <schwarze@openbsd.org>
Fri, 20 Mar 2015 12:54:22 +0000 (12:54 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Fri, 20 Mar 2015 12:54:22 +0000 (12:54 +0000)
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.

libman.h
man_macro.c

index 8d115b3abeda024fbadca745ce7fc4d4ad2acee0..e55bc89a9d7318bd8a0be8176e8cce134f49c366 100644 (file)
--- a/libman.h
+++ b/libman.h
@@ -1,7 +1,7 @@
-/*     $Id: libman.h,v 1.67 2014/12/28 14:42:27 schwarze Exp $ */
+/*     $Id: libman.h,v 1.68 2015/03/20 12:54:22 schwarze Exp $ */
 /*
  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2014 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
  *
  * 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;
index c86ab6f13f01bcccf014c34e34dc3a492102d5d2..9b3561958c8d38d9a0d2eeb52750d5258d7f5b5a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_macro.c,v 1.98 2015/02/06 11:54:36 schwarze Exp $ */
+/*     $Id: man_macro.c,v 1.99 2015/03/20 12:54:22 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2012, 2013, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -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);
 }