* mdocml: Simplify man_unscope(), removing 18 lines of code, that is,
@ 2014-07-07 19:18 schwarze
0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-07-07 19:18 UTC (permalink / raw)
To: source
Log Message:
-----------
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.
Modified Files:
--------------
mdocml:
libman.h
man.c
man_macro.c
Revision Data
-------------
Index: man.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man.c,v
retrieving revision 1.131
retrieving revision 1.132
diff -Lman.c -Lman.c -u -p -r1.131 -r1.132
--- man.c
+++ man.c
@@ -392,7 +392,7 @@ man_descope(struct man *man, int line, i
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);
}
@@ -400,7 +400,7 @@ man_descope(struct man *man, int line, i
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));
}
@@ -639,7 +639,7 @@ man_pmacro(struct man *man, int ln, char
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));
Index: libman.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/libman.h,v
retrieving revision 1.58
retrieving revision 1.59
diff -Llibman.h -Llibman.h -u -p -r1.58 -r1.59
--- libman.h
+++ libman.h
@@ -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
Index: man_macro.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man_macro.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -Lman_macro.c -Lman_macro.c -u -p -r1.82 -r1.83
--- man_macro.c
+++ man_macro.c
@@ -97,57 +97,33 @@ const struct man_macro __man_macros[MAN_
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);
}
@@ -264,7 +240,7 @@ rew_scope(enum man_type type, struct man
*/
assert(n);
- return(man_unscope(man, n, MANDOCERR_MAX));
+ return(man_unscope(man, n));
}
@@ -298,7 +274,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);
}
@@ -335,7 +311,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;
}
@@ -482,7 +458,7 @@ int
man_macroend(struct man *man)
{
- return(man_unscope(man, man->first, MANDOCERR_SCOPEEXIT));
+ return(man_unscope(man, man->first));
}
static int
--
To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2014-07-07 19:18 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-07 19:18 mdocml: Simplify man_unscope(), removing 18 lines of code, that is, schwarze
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).