From: schwarze@mdocml.bsd.lv
To: source@mdocml.bsd.lv
Subject: mdocml: Simplify man_unscope(), removing 18 lines of code, that is,
Date: Mon, 7 Jul 2014 15:18:15 -0400 (EDT) [thread overview]
Message-ID: <201407071918.s67JIFn5018300@krisdoz.my.domain> (raw)
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
reply other threads:[~2014-07-07 19:18 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201407071918.s67JIFn5018300@krisdoz.my.domain \
--to=schwarze@mdocml.bsd.lv \
--cc=source@mdocml.bsd.lv \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).