version 1.215, 2017/02/11 15:47:16 |
version 1.218, 2017/04/17 12:53:29 |
|
|
/* $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 381 rew_elem(struct roff_man *mdoc, int tok) |
|
Line 381 rew_elem(struct roff_man *mdoc, int tok) |
|
static void |
static void |
break_intermediate(struct roff_node *n, struct roff_node *breaker) |
break_intermediate(struct roff_node *n, struct roff_node *breaker) |
{ |
{ |
|
if (n != breaker && |
|
n->type != ROFFT_BLOCK && n->type != ROFFT_HEAD && |
|
(n->type != ROFFT_BODY || n->end != ENDBODY_NOT)) |
|
n = n->parent; |
while (n != breaker) { |
while (n != breaker) { |
if ( ! (n->flags & NODE_VALID)) |
if ( ! (n->flags & NODE_VALID)) |
n->flags |= NODE_BROKEN; |
n->flags |= NODE_BROKEN; |
Line 410 find_pending(struct roff_man *mdoc, int tok, int line, |
|
Line 414 find_pending(struct roff_man *mdoc, int tok, int line, |
|
if (n->type == ROFFT_BLOCK && |
if (n->type == ROFFT_BLOCK && |
mdoc_macros[n->tok].flags & MDOC_EXPLICIT) { |
mdoc_macros[n->tok].flags & MDOC_EXPLICIT) { |
irc = 1; |
irc = 1; |
break_intermediate(mdoc->last, n); |
break_intermediate(mdoc->last, target); |
n->flags |= NODE_BROKEN; |
|
if (target->type == ROFFT_HEAD) |
if (target->type == ROFFT_HEAD) |
target->flags |= NODE_ENDED; |
target->flags |= NODE_ENDED; |
else if ( ! (target->flags & NODE_ENDED)) { |
else if ( ! (target->flags & NODE_ENDED)) { |
Line 420 find_pending(struct roff_man *mdoc, int tok, int line, |
|
Line 423 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 634 blk_exp_close(MACRO_PROT_ARGS) |
|
Line 637 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 900 in_line(MACRO_PROT_ARGS) |
|
Line 903 in_line(MACRO_PROT_ARGS) |
|
} |
} |
} |
} |
|
|
if (scope) |
if (scope && tok != MDOC_Lk) { |
rew_elem(mdoc, tok); |
rew_elem(mdoc, tok); |
|
scope = 0; |
|
} |
|
|
/* |
/* |
* If no elements have been collected and we're allowed to have |
* If no elements have been collected and we're allowed to have |
Line 921 in_line(MACRO_PROT_ARGS) |
|
Line 926 in_line(MACRO_PROT_ARGS) |
|
} |
} |
if (nl) |
if (nl) |
append_delims(mdoc, line, pos, buf); |
append_delims(mdoc, line, pos, buf); |
|
if (scope) |
|
rew_elem(mdoc, tok); |
} |
} |
|
|
static void |
static void |