FreeBSD/contrib/mdocml/mdoc_macro.c
/*
 * Rewind up to a specific block, including all blocks that broke it.
 */
Rewind up to a specific block, including all blocks that broke it.
Rewind up to a specific block including all blocks that broke it .
static void
rew_pending(struct roff_man *mdoc, const struct roff_node *n)
{
	for (;;) {
		rew_last(mdoc, n);
		if (mdoc->last == n) {
			switch (n->type) {
			case ROFFT_HEAD:
				roff_body_alloc(mdoc, n->line, n->pos,
				    n->tok);
				return;
			case ROFFT_BLOCK:
				break;
			default:
				return;
			}
			if ( ! (n->flags & MDOC_BROKEN))
				return;
		} else
			n = mdoc->last;
		for (;;) {
			if ((n = n->parent) == NULL)
				return;
			if (n->type == ROFFT_BLOCK ||
			    n->type == ROFFT_HEAD) {
				if (n->flags & MDOC_ENDED)
					break;
				else
					return;
			}
		}
	}
}
static void rew_pending ( struct roff_man * mdoc , const struct roff_node * n ) { for ( ; ; ) { rew_last ( mdoc , n ) ; if ( mdoc -> last == n ) { switch ( n -> type ) { case ROFFT_HEAD : roff_body_alloc ( mdoc , n -> line , n -> pos , n -> tok ) ; return ; case ROFFT_BLOCK : break ; default : return ; } if ( ! ( n -> flags & MDOC_BROKEN ) ) return ; } else n = mdoc -> last ; for ( ; ; ) { if ( ( n = n -> parent ) == NULL ) return ; if ( n -> type == ROFFT_BLOCK || n -> type == ROFFT_HEAD ) { if ( n -> flags & MDOC_ENDED ) break ; else return ; } } } }
Rewind up to a specific block, including all blocks that broke it.
Rewind up to a specific block including all blocks that broke it .