=================================================================== RCS file: /cvs/mandoc/man_macro.c,v retrieving revision 1.112 retrieving revision 1.115 diff -u -p -r1.112 -r1.115 --- mandoc/man_macro.c 2015/10/06 18:32:19 1.112 +++ mandoc/man_macro.c 2017/01/10 13:47:00 1.115 @@ -1,4 +1,4 @@ -/* $Id: man_macro.c,v 1.112 2015/10/06 18:32:19 schwarze Exp $ */ +/* $Id: man_macro.c,v 1.115 2017/01/10 13:47:00 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2012, 2013, 2014, 2015 Ingo Schwarze @@ -95,7 +95,7 @@ man_unscope(struct roff_man *man, const struct roff_no /* Reached the end of the document? */ - if (to == NULL && ! (n->flags & MAN_VALID)) { + if (to == NULL && ! (n->flags & NODE_VALID)) { if (man->flags & (MAN_BLINE | MAN_ELINE) && man_macros[n->tok].flags & MAN_SCOPED) { mandoc_vmsg(MANDOCERR_BLK_LINE, @@ -130,7 +130,7 @@ man_unscope(struct roff_man *man, const struct roff_no man->last = n; n = n->parent; - man_valid_post(man); + man->last->flags |= NODE_VALID; } /* @@ -157,14 +157,14 @@ rew_scope(struct roff_man *man, int tok) /* Preserve empty paragraphs before RS. */ n = man->last; - if (tok == MAN_RS && n->nchild == 0 && + if (tok == MAN_RS && n->child == NULL && (n->tok == MAN_P || n->tok == MAN_PP || n->tok == MAN_LP)) return; for (;;) { if (n->type == ROFFT_ROOT) return; - if (n->flags & MAN_VALID) { + if (n->flags & NODE_VALID) { n = n->parent; continue; } @@ -356,13 +356,13 @@ in_line_eoln(MACRO_PROT_ARGS) } /* - * Append MAN_EOS in case the last snipped argument + * Append NODE_EOS in case the last snipped argument * ends with a dot, e.g. `.IR syslog (3).' */ if (n != man->last && mandoc_eos(man->last->string, strlen(man->last->string))) - man->last->flags |= MAN_EOS; + man->last->flags |= NODE_EOS; /* * If no arguments are specified and this is MAN_SCOPED (i.e., @@ -379,28 +379,13 @@ in_line_eoln(MACRO_PROT_ARGS) assert(man->last->type != ROFFT_ROOT); man->next = ROFF_NEXT_SIBLING; - /* - * Rewind our element scope. Note that when TH is pruned, we'll - * be back at the root, so make sure that we don't clobber as - * its sibling. - */ + /* Rewind our element scope. */ for ( ; man->last; man->last = man->last->parent) { + man_state(man, man->last); if (man->last == n) break; - if (man->last->type == ROFFT_ROOT) - break; - man_valid_post(man); } - - assert(man->last); - - /* - * Same here regarding whether we're back at the root. - */ - - if (man->last->type != ROFFT_ROOT) - man_valid_post(man); } void @@ -408,6 +393,7 @@ man_endparse(struct roff_man *man) { man_unscope(man, man->first); + man->flags &= ~MAN_LITERAL; } static int