summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2014-07-07 19:17:40 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2014-07-07 19:17:40 +0000
commit54887a6441971bcef7b90de45898d5ad4a94a45f (patch)
tree1316faef2e3be8cf6fc9fcf65d9c2e080522999a
parenteea815898e04349025979986a909f054fb5a5b69 (diff)
Simplify man_unscope(), removing 18 lines of code, that is,
removing one function argument, one function definition, three function invocations and two pointless assert()s. No functional change.
-rw-r--r--usr.bin/mandoc/libman.h5
-rw-r--r--usr.bin/mandoc/man.c8
-rw-r--r--usr.bin/mandoc/man_macro.c68
3 files changed, 28 insertions, 53 deletions
diff --git a/usr.bin/mandoc/libman.h b/usr.bin/mandoc/libman.h
index d7cc81536cc..507808ee13d 100644
--- a/usr.bin/mandoc/libman.h
+++ b/usr.bin/mandoc/libman.h
@@ -1,4 +1,4 @@
-/* $Id: libman.h,v 1.34 2014/04/20 16:44:44 schwarze Exp $ */
+/* $Id: libman.h,v 1.35 2014/07/07 19:17:39 schwarze Exp $ */
/*
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -78,8 +78,7 @@ enum mant man_hash_find(const char *);
int man_macroend(struct man *);
int man_valid_post(struct man *);
int man_valid_pre(struct man *, struct man_node *);
-int man_unscope(struct man *, const struct man_node *,
- enum mandocerr);
+int man_unscope(struct man *, const struct man_node *);
__END_DECLS
diff --git a/usr.bin/mandoc/man.c b/usr.bin/mandoc/man.c
index ae94e373923..a38ff9e9675 100644
--- a/usr.bin/mandoc/man.c
+++ b/usr.bin/mandoc/man.c
@@ -1,4 +1,4 @@
-/* $Id: man.c,v 1.81 2014/07/06 19:08:56 schwarze Exp $ */
+/* $Id: man.c,v 1.82 2014/07/07 19:17:39 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -388,7 +388,7 @@ man_descope(struct man *man, int line, int offs)
if (MAN_ELINE & man->flags) {
man->flags &= ~MAN_ELINE;
- if ( ! man_unscope(man, man->last->parent, MANDOCERR_MAX))
+ if ( ! man_unscope(man, man->last->parent))
return(0);
}
@@ -396,7 +396,7 @@ man_descope(struct man *man, int line, int offs)
return(1);
man->flags &= ~MAN_BLINE;
- if ( ! man_unscope(man, man->last->parent, MANDOCERR_MAX))
+ if ( ! man_unscope(man, man->last->parent))
return(0);
return(man_body_alloc(man, line, offs, man->last->tok));
}
@@ -635,7 +635,7 @@ man_pmacro(struct man *man, int ln, char *buf, int offs)
assert(MAN_BLINE & man->flags);
man->flags &= ~MAN_BLINE;
- if ( ! man_unscope(man, man->last->parent, MANDOCERR_MAX))
+ if ( ! man_unscope(man, man->last->parent))
return(0);
return(man_body_alloc(man, ln, ppos, man->last->tok));
diff --git a/usr.bin/mandoc/man_macro.c b/usr.bin/mandoc/man_macro.c
index 027b0618683..671c8fec3d9 100644
--- a/usr.bin/mandoc/man_macro.c
+++ b/usr.bin/mandoc/man_macro.c
@@ -1,4 +1,4 @@
-/* $Id: man_macro.c,v 1.45 2014/04/20 16:44:44 schwarze Exp $ */
+/* $Id: man_macro.c,v 1.46 2014/07/07 19:17:39 schwarze Exp $ */
/*
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2012, 2013 Ingo Schwarze <schwarze@openbsd.org>
@@ -93,57 +93,33 @@ const struct man_macro __man_macros[MAN_MAX] = {
const struct man_macro * const man_macros = __man_macros;
-/*
- * Warn when "n" is an explicit non-roff macro.
- */
-static void
-rew_warn(struct man *man, struct man_node *n, enum mandocerr er)
-{
-
- if (er == MANDOCERR_MAX || MAN_BLOCK != n->type)
- return;
- if (MAN_VALID & n->flags)
- return;
- if ( ! (MAN_EXPLICIT & man_macros[n->tok].flags))
- return;
-
- assert(er < MANDOCERR_FATAL);
- man_nmsg(man, n, er);
-}
-
-/*
- * Rewind scope. If a code "er" != MANDOCERR_MAX has been provided, it
- * will be used if an explicit block scope is being closed out.
- */
int
-man_unscope(struct man *man, const struct man_node *to,
- enum mandocerr er)
+man_unscope(struct man *man, const struct man_node *to)
{
struct man_node *n;
- assert(to);
-
man->next = MAN_NEXT_SIBLING;
-
- while (man->last != to) {
+ to = to->parent;
+ n = man->last;
+ while (n != to) {
+ if (NULL == to &&
+ MAN_BLOCK == n->type &&
+ 0 == (MAN_VALID & n->flags) &&
+ MAN_EXPLICIT & man_macros[n->tok].flags)
+ mandoc_msg(MANDOCERR_SCOPEEXIT,
+ man->parse, n->line, n->pos,
+ man_macronames[n->tok]);
/*
- * Save the parent here, because we may delete the
- * man->last node in the post-validation phase and reset
- * it to man->last->parent, causing a step in the closing
- * out to be lost.
+ * We might delete the man->last node
+ * in the post-validation phase.
+ * Save a pointer to the parent such that
+ * we know where to continue the iteration.
*/
- n = man->last->parent;
- rew_warn(man, man->last, er);
+ man->last = n;
+ n = n->parent;
if ( ! man_valid_post(man))
return(0);
- man->last = n;
- assert(man->last);
}
-
- rew_warn(man, man->last, er);
- if ( ! man_valid_post(man))
- return(0);
-
return(1);
}
@@ -260,7 +236,7 @@ rew_scope(enum man_type type, struct man *man, enum mant tok)
*/
assert(n);
- return(man_unscope(man, n, MANDOCERR_MAX));
+ return(man_unscope(man, n));
}
@@ -294,7 +270,7 @@ blk_close(MACRO_PROT_ARGS)
if ( ! rew_scope(MAN_BLOCK, man, MAN_PP))
return(0);
} else
- man_unscope(man, nn, MANDOCERR_MAX);
+ man_unscope(man, nn);
return(1);
}
@@ -331,7 +307,7 @@ blk_exp(MACRO_PROT_ARGS)
if (n->tok != tok)
continue;
assert(MAN_HEAD == n->type);
- man_unscope(man, n, MANDOCERR_MAX);
+ man_unscope(man, n);
break;
}
@@ -478,7 +454,7 @@ int
man_macroend(struct man *man)
{
- return(man_unscope(man, man->first, MANDOCERR_SCOPEEXIT));
+ return(man_unscope(man, man->first));
}
static int