version 1.235, 2014/10/25 14:35:37 |
version 1.237, 2014/10/28 17:36:19 |
Line 107 struct roffreg { |
|
Line 107 struct roffreg { |
|
|
|
struct roff { |
struct roff { |
struct mparse *parse; /* parse point */ |
struct mparse *parse; /* parse point */ |
|
const struct mchars *mchars; /* character table */ |
struct roffnode *last; /* leaf of stack */ |
struct roffnode *last; /* leaf of stack */ |
int *rstack; /* stack of inverted `ie' values */ |
int *rstack; /* stack of inverted `ie' values */ |
struct roffreg *regtab; /* number registers */ |
struct roffreg *regtab; /* number registers */ |
Line 476 roff_free(struct roff *r) |
|
Line 477 roff_free(struct roff *r) |
|
} |
} |
|
|
struct roff * |
struct roff * |
roff_alloc(struct mparse *parse, int options) |
roff_alloc(struct mparse *parse, const struct mchars *mchars, int options) |
{ |
{ |
struct roff *r; |
struct roff *r; |
|
|
r = mandoc_calloc(1, sizeof(struct roff)); |
r = mandoc_calloc(1, sizeof(struct roff)); |
r->parse = parse; |
r->parse = parse; |
|
r->mchars = mchars; |
r->options = options; |
r->options = options; |
r->format = options & (MPARSE_MDOC | MPARSE_MAN); |
r->format = options & (MPARSE_MDOC | MPARSE_MAN); |
r->rstackpos = -1; |
r->rstackpos = -1; |
Line 508 roff_res(struct roff *r, char **bufp, size_t *szp, int |
|
Line 510 roff_res(struct roff *r, char **bufp, size_t *szp, int |
|
char *nbuf; /* new buffer to copy bufp to */ |
char *nbuf; /* new buffer to copy bufp to */ |
size_t maxl; /* expected length of the escape name */ |
size_t maxl; /* expected length of the escape name */ |
size_t naml; /* actual length of the escape name */ |
size_t naml; /* actual length of the escape name */ |
|
enum mandoc_esc esc; /* type of the escape sequence */ |
|
int inaml; /* length returned from mandoc_escape() */ |
int expand_count; /* to avoid infinite loops */ |
int expand_count; /* to avoid infinite loops */ |
int npos; /* position in numeric expression */ |
int npos; /* position in numeric expression */ |
int arg_complete; /* argument not interrupted by eol */ |
int arg_complete; /* argument not interrupted by eol */ |
Line 551 roff_res(struct roff *r, char **bufp, size_t *szp, int |
|
Line 555 roff_res(struct roff *r, char **bufp, size_t *szp, int |
|
res = ubuf; |
res = ubuf; |
break; |
break; |
default: |
default: |
if (ESCAPE_ERROR == mandoc_escape(&cp, NULL, NULL)) |
esc = mandoc_escape(&cp, &stnam, &inaml); |
|
if (esc == ESCAPE_ERROR || |
|
(esc == ESCAPE_SPECIAL && |
|
mchars_spec2cp(r->mchars, stnam, inaml) < 0)) |
mandoc_vmsg(MANDOCERR_ESC_BAD, |
mandoc_vmsg(MANDOCERR_ESC_BAD, |
r->parse, ln, (int)(stesc - *bufp), |
r->parse, ln, (int)(stesc - *bufp), |
"%.*s", (int)(cp - stesc), stesc); |
"%.*s", (int)(cp - stesc), stesc); |
Line 730 roff_parseln(struct roff *r, int ln, char **bufp, |
|
Line 737 roff_parseln(struct roff *r, int ln, char **bufp, |
|
|
|
/* Handle in-line equation delimiters. */ |
/* Handle in-line equation delimiters. */ |
|
|
if (r->last_eqn != NULL && r->last_eqn->delim && |
if (r->tbl == NULL && |
|
r->last_eqn != NULL && r->last_eqn->delim && |
(r->eqn == NULL || r->eqn_inline)) { |
(r->eqn == NULL || r->eqn_inline)) { |
e = roff_eqndelim(r, bufp, szp, pos); |
e = roff_eqndelim(r, bufp, szp, pos); |
if (e == ROFF_REPARSE) |
if (e == ROFF_REPARSE) |