-/* $Id: man_macro.c,v 1.39 2010/03/27 10:13:16 kristaps Exp $ */
+/* $Id: man_macro.c,v 1.42 2010/03/29 10:10:35 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
enum rew {
REW_REWIND,
REW_NOHALT,
- REW_HALT,
+ REW_HALT
};
static int blk_close(MACRO_PROT_ARGS);
if ( ! rew_scope(MAN_BLOCK, m, ntok))
return(0);
- /*
- * XXX: manually adjust our next-line status. roff macros are,
- * for the moment, ignored, so we don't want to close out bodies
- * and so on.
+ /*
+ * Restore flags set when we got here and also stipulate that we
+ * don't post-process the line when exiting the macro op
+ * function in man_pmacro(). See blk_exp().
*/
- switch (m->last->type) {
- case (MAN_BODY):
- m->next = MAN_NEXT_CHILD;
- break;
- default:
- break;
- }
-
+ m->flags = m->svflags | MAN_ILINE;
+ m->next = m->svnext;
return(1);
}
return(0);
if ( ! rew_scope(MAN_BLOCK, m, tok))
return(0);
+ } else {
+ /*
+ * Save our state and next-scope indicator; we restore
+ * it when exiting from the roff instruction block. See
+ * blk_dotted().
+ */
+ m->svflags = m->flags;
+ m->svnext = m->next;
+
+ /* Make sure we drop any line modes. */
+ m->flags = 0;
}
if ( ! man_block_alloc(m, line, ppos, tok))