version 1.193, 2015/04/19 14:57:38 |
version 1.197, 2015/04/29 21:58:32 |
Line 210 const struct mdoc_macro * const mdoc_macros = __mdoc_m |
|
Line 210 const struct mdoc_macro * const mdoc_macros = __mdoc_m |
|
* are errors. |
* are errors. |
*/ |
*/ |
void |
void |
mdoc_macroend(struct roff_man *mdoc) |
mdoc_endparse(struct roff_man *mdoc) |
{ |
{ |
struct roff_node *n; |
struct roff_node *n; |
|
|
Line 291 rew_pending(struct roff_man *mdoc, const struct roff_n |
|
Line 291 rew_pending(struct roff_man *mdoc, const struct roff_n |
|
for (;;) { |
for (;;) { |
rew_last(mdoc, n); |
rew_last(mdoc, n); |
|
|
switch (n->type) { |
if (mdoc->last == n) { |
case ROFFT_HEAD: |
switch (n->type) { |
roff_body_alloc(mdoc, n->line, n->pos, n->tok); |
case ROFFT_HEAD: |
return; |
roff_body_alloc(mdoc, n->line, n->pos, |
case ROFFT_BLOCK: |
n->tok); |
break; |
return; |
default: |
case ROFFT_BLOCK: |
return; |
break; |
} |
default: |
|
return; |
|
} |
|
if ( ! (n->flags & MDOC_BROKEN)) |
|
return; |
|
} else |
|
n = mdoc->last; |
|
|
if ( ! (n->flags & MDOC_BROKEN)) |
|
return; |
|
|
|
for (;;) { |
for (;;) { |
if ((n = n->parent) == NULL) |
if ((n = n->parent) == NULL) |
return; |
return; |
Line 641 blk_exp_close(MACRO_PROT_ARGS) |
|
Line 644 blk_exp_close(MACRO_PROT_ARGS) |
|
if (body == NULL) { |
if (body == NULL) { |
mandoc_msg(MANDOCERR_BLK_NOTOPEN, mdoc->parse, |
mandoc_msg(MANDOCERR_BLK_NOTOPEN, mdoc->parse, |
line, ppos, mdoc_macronames[tok]); |
line, ppos, mdoc_macronames[tok]); |
|
if (later != NULL) |
|
later->flags &= ~MDOC_BROKEN; |
if (maxargs && endbody == NULL) { |
if (maxargs && endbody == NULL) { |
/* |
/* |
* Stray .Ec without previous .Eo: |
* Stray .Ec without previous .Eo: |
Line 668 blk_exp_close(MACRO_PROT_ARGS) |
|
Line 673 blk_exp_close(MACRO_PROT_ARGS) |
|
|
|
if (endbody != NULL) |
if (endbody != NULL) |
n = endbody; |
n = endbody; |
|
|
|
ntok = TOKEN_NONE; |
for (j = 0; ; j++) { |
for (j = 0; ; j++) { |
lastarg = *pos; |
lastarg = *pos; |
|
|
Line 695 blk_exp_close(MACRO_PROT_ARGS) |
|
Line 702 blk_exp_close(MACRO_PROT_ARGS) |
|
} |
} |
|
|
if (n != NULL) { |
if (n != NULL) { |
if (n != mdoc->last && n->flags & MDOC_BROKEN) { |
if (ntok != TOKEN_NONE && n->flags & MDOC_BROKEN) { |
target = n; |
target = n; |
do |
do |
target = target->parent; |
target = target->parent; |