version 1.213, 2017/02/11 13:24:12 |
version 1.216, 2017/02/16 03:00:23 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2010, 2012-2016 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2010, 2012-2017 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 400 find_pending(struct roff_man *mdoc, int tok, int line, |
|
Line 400 find_pending(struct roff_man *mdoc, int tok, int line, |
|
struct roff_node *n; |
struct roff_node *n; |
int irc; |
int irc; |
|
|
|
if (target->flags & NODE_VALID) |
|
return 0; |
|
|
irc = 0; |
irc = 0; |
for (n = mdoc->last; n != NULL && n != target; n = n->parent) { |
for (n = mdoc->last; n != NULL && n != target; n = n->parent) { |
if (n->flags & NODE_ENDED) |
if (n->flags & NODE_ENDED) |
Line 417 find_pending(struct roff_man *mdoc, int tok, int line, |
|
Line 420 find_pending(struct roff_man *mdoc, int tok, int line, |
|
"%s breaks %s", mdoc_macronames[tok], |
"%s breaks %s", mdoc_macronames[tok], |
mdoc_macronames[n->tok]); |
mdoc_macronames[n->tok]); |
mdoc_endbody_alloc(mdoc, line, ppos, |
mdoc_endbody_alloc(mdoc, line, ppos, |
tok, target, ENDBODY_NOSPACE); |
tok, target); |
} |
} |
} |
} |
} |
} |
Line 631 blk_exp_close(MACRO_PROT_ARGS) |
|
Line 634 blk_exp_close(MACRO_PROT_ARGS) |
|
mdoc_macronames[later->tok]); |
mdoc_macronames[later->tok]); |
|
|
endbody = mdoc_endbody_alloc(mdoc, line, ppos, |
endbody = mdoc_endbody_alloc(mdoc, line, ppos, |
atok, body, ENDBODY_SPACE); |
atok, body); |
|
|
if (tok == MDOC_El) |
if (tok == MDOC_El) |
itblk->flags |= NODE_ENDED | NODE_BROKEN; |
itblk->flags |= NODE_ENDED | NODE_BROKEN; |
Line 647 blk_exp_close(MACRO_PROT_ARGS) |
|
Line 650 blk_exp_close(MACRO_PROT_ARGS) |
|
break; |
break; |
} |
} |
|
|
/* Explicit blocks close out description lines. */ |
/* |
|
* Explicit blocks close out description lines, but |
|
* even those can get broken together with a child. |
|
*/ |
|
|
if (n->tok == MDOC_Nd) { |
if (n->tok == MDOC_Nd) { |
rew_last(mdoc, n); |
if (later != NULL) |
|
n->flags |= NODE_BROKEN | NODE_ENDED; |
|
else |
|
rew_last(mdoc, n); |
continue; |
continue; |
} |
} |
|
|
Line 727 blk_exp_close(MACRO_PROT_ARGS) |
|
Line 736 blk_exp_close(MACRO_PROT_ARGS) |
|
do |
do |
target = target->parent; |
target = target->parent; |
while ( ! (target->flags & NODE_ENDED)); |
while ( ! (target->flags & NODE_ENDED)); |
if ( ! (target->flags & NODE_VALID)) |
pending = find_pending(mdoc, ntok, line, ppos, target); |
pending = find_pending(mdoc, ntok, |
|
line, ppos, target); |
|
} |
} |
if ( ! pending) |
if ( ! pending) |
rew_pending(mdoc, n); |
rew_pending(mdoc, n); |