summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2015-03-20 12:53:44 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2015-03-20 12:53:44 +0000
commit7b215b885573835e4d2ba1dcdbd3fb9fb91fac98 (patch)
tree909d7a423f4f38ab52c54f7a5dc620df497bf536 /usr.bin
parent28bb69cb139a03f5a829f9c3850048940aa37f87 (diff)
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 'usr.bin')
-rw-r--r--usr.bin/mandoc/libman.h15
-rw-r--r--usr.bin/mandoc/man_macro.c34
2 files changed, 24 insertions, 25 deletions
diff --git a/usr.bin/mandoc/libman.h b/usr.bin/mandoc/libman.h
index 0bf8135f936..392c8d1e4f0 100644
--- a/usr.bin/mandoc/libman.h
+++ b/usr.bin/mandoc/libman.h
@@ -1,7 +1,7 @@
-/* $OpenBSD: libman.h,v 1.42 2014/12/28 14:39:08 schwarze Exp $ */
+/* $OpenBSD: libman.h,v 1.43 2015/03/20 12:53:43 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;
diff --git a/usr.bin/mandoc/man_macro.c b/usr.bin/mandoc/man_macro.c
index d61a0d70493..e1ae33e8120 100644
--- a/usr.bin/mandoc/man_macro.c
+++ b/usr.bin/mandoc/man_macro.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: man_macro.c,v 1.60 2015/02/06 11:54:03 schwarze Exp $ */
+/* $OpenBSD: man_macro.c,v 1.61 2015/03/20 12:53:43 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2012, 2013, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -53,7 +53,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 */
@@ -74,7 +74,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 */
@@ -84,7 +84,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 */
};
@@ -123,7 +123,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]);
@@ -188,7 +188,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);
@@ -385,18 +385,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);
}