version 1.75, 2010/05/31 10:28:04 |
version 1.82, 2010/06/27 15:52:41 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se> |
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv> |
* |
* |
* 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 607 rew_sub(enum mdoc_type t, struct mdoc *m, |
|
Line 607 rew_sub(enum mdoc_type t, struct mdoc *m, |
|
if ( ! rew_last(m, n)) |
if ( ! rew_last(m, n)) |
return(0); |
return(0); |
|
|
#ifdef UGLY |
|
/* |
/* |
* The current block extends an enclosing block beyond a line |
* The current block extends an enclosing block beyond a line |
* break. Now that the current block ends, close the enclosing |
* break. Now that the current block ends, close the enclosing |
Line 620 rew_sub(enum mdoc_type t, struct mdoc *m, |
|
Line 619 rew_sub(enum mdoc_type t, struct mdoc *m, |
|
if ( ! mdoc_body_alloc(m, n->line, n->pos, n->tok)) |
if ( ! mdoc_body_alloc(m, n->line, n->pos, n->tok)) |
return(0); |
return(0); |
} |
} |
#endif |
|
|
|
return(1); |
return(1); |
} |
} |
Line 936 blk_full(MACRO_PROT_ARGS) |
|
Line 934 blk_full(MACRO_PROT_ARGS) |
|
struct mdoc_arg *arg; |
struct mdoc_arg *arg; |
struct mdoc_node *head; /* save of head macro */ |
struct mdoc_node *head; /* save of head macro */ |
struct mdoc_node *body; /* save of body macro */ |
struct mdoc_node *body; /* save of body macro */ |
#ifdef UGLY |
|
struct mdoc_node *n; |
struct mdoc_node *n; |
#endif |
|
enum mdoc_type mtt; |
enum mdoc_type mtt; |
enum mdoct ntok; |
enum mdoct ntok; |
enum margserr ac, lac; |
enum margserr ac, lac; |
Line 1118 blk_full(MACRO_PROT_ARGS) |
|
Line 1114 blk_full(MACRO_PROT_ARGS) |
|
/* If we've already opened our body, exit now. */ |
/* If we've already opened our body, exit now. */ |
|
|
if (NULL != body) |
if (NULL != body) |
return(1); |
goto out; |
|
|
#ifdef UGLY |
|
/* |
/* |
* If there is an open (i.e., unvalidated) sub-block requiring |
* If there is an open (i.e., unvalidated) sub-block requiring |
* explicit close-out, postpone switching the current block from |
* explicit close-out, postpone switching the current block from |
Line 1136 blk_full(MACRO_PROT_ARGS) |
|
Line 1131 blk_full(MACRO_PROT_ARGS) |
|
return(1); |
return(1); |
} |
} |
} |
} |
#endif |
|
|
|
/* Close out scopes to remain in a consistent state. */ |
/* Close out scopes to remain in a consistent state. */ |
|
|
Line 1145 blk_full(MACRO_PROT_ARGS) |
|
Line 1139 blk_full(MACRO_PROT_ARGS) |
|
if ( ! mdoc_body_alloc(m, line, ppos, tok)) |
if ( ! mdoc_body_alloc(m, line, ppos, tok)) |
return(0); |
return(0); |
|
|
|
out: |
|
if ( ! (MDOC_FREECOL & m->flags)) |
|
return(1); |
|
|
|
if ( ! rew_sub(MDOC_BODY, m, tok, line, ppos)) |
|
return(0); |
|
if ( ! rew_sub(MDOC_BLOCK, m, tok, line, ppos)) |
|
return(0); |
|
|
|
m->flags &= ~MDOC_FREECOL; |
return(1); |
return(1); |
} |
} |
|
|
Line 1673 phrase(struct mdoc *m, int line, int ppos, char *buf) |
|
Line 1677 phrase(struct mdoc *m, int line, int ppos, char *buf) |
|
} |
} |
|
|
|
|
|
/* ARGSUSED */ |
static int |
static int |
phrase_ta(MACRO_PROT_ARGS) |
phrase_ta(MACRO_PROT_ARGS) |
{ |
{ |
int la; |
int la; |
enum mdoct ntok; |
enum mdoct ntok; |
enum margserr ac; |
enum margserr ac; |
struct mdoc_node *n; |
|
char *p; |
char *p; |
|
|
/* |
/* |
Line 1687 phrase_ta(MACRO_PROT_ARGS) |
|
Line 1691 phrase_ta(MACRO_PROT_ARGS) |
|
* it should simply error out with ARGSLOST. |
* it should simply error out with ARGSLOST. |
*/ |
*/ |
|
|
n = m->last; |
|
if ( ! rew_sub(MDOC_BODY, m, MDOC_It, line, ppos)) |
if ( ! rew_sub(MDOC_BODY, m, MDOC_It, line, ppos)) |
return(0); |
return(0); |
|
|
/* |
|
* FIXME: this is necessary in bogus constructions like |
|
* .Bl -column foo bar |
|
* .Sy foo Ta bar |
|
* It is, however, an ugly way to do it. |
|
* |
|
* XXX; remove this when the above construct builds an implied |
|
* `It' marker. |
|
*/ |
|
if (NULL == m->last || |
|
MDOC_BODY != m->last->type || |
|
MDOC_It != m->last->tok) { |
|
swarn(m, tok, line, ppos, n); |
|
return(0); |
|
} |
|
|
|
if ( ! mdoc_body_alloc(m, line, ppos, MDOC_It)) |
if ( ! mdoc_body_alloc(m, line, ppos, MDOC_It)) |
return(0); |
return(0); |
|
|