version 1.141, 2011/05/24 21:18:06 |
version 1.143, 2011/06/30 08:05:13 |
Line 150 static const char *roff_getstrn(const struct roff *, |
|
Line 150 static const char *roff_getstrn(const struct roff *, |
|
static enum rofferr roff_line_ignore(ROFF_ARGS); |
static enum rofferr roff_line_ignore(ROFF_ARGS); |
static enum rofferr roff_nr(ROFF_ARGS); |
static enum rofferr roff_nr(ROFF_ARGS); |
static int roff_res(struct roff *, |
static int roff_res(struct roff *, |
char **, size_t *, int); |
char **, size_t *, int, int); |
static enum rofferr roff_rm(ROFF_ARGS); |
static enum rofferr roff_rm(ROFF_ARGS); |
static void roff_setstr(struct roff *, |
static void roff_setstr(struct roff *, |
const char *, const char *, int); |
const char *, const char *, int); |
Line 347 roff_free1(struct roff *r) |
|
Line 347 roff_free1(struct roff *r) |
|
void |
void |
roff_reset(struct roff *r) |
roff_reset(struct roff *r) |
{ |
{ |
|
int i; |
|
|
roff_free1(r); |
roff_free1(r); |
|
|
|
for (i = 0; i < PREDEFS_MAX; i++) |
|
roff_setstr(r, predefs[i].name, predefs[i].str, 0); |
} |
} |
|
|
|
|
Line 387 roff_alloc(struct regset *regs, struct mparse *parse) |
|
Line 391 roff_alloc(struct regset *regs, struct mparse *parse) |
|
* is processed. |
* is processed. |
*/ |
*/ |
static int |
static int |
roff_res(struct roff *r, char **bufp, size_t *szp, int pos) |
roff_res(struct roff *r, char **bufp, size_t *szp, int ln, int pos) |
{ |
{ |
const char *stesc; /* start of an escape sequence ('\\') */ |
const char *stesc; /* start of an escape sequence ('\\') */ |
const char *stnam; /* start of the name, after "[(*" */ |
const char *stnam; /* start of the name, after "[(*" */ |
Line 454 roff_res(struct roff *r, char **bufp, size_t *szp, int |
|
Line 458 roff_res(struct roff *r, char **bufp, size_t *szp, int |
|
res = roff_getstrn(r, stnam, (size_t)i); |
res = roff_getstrn(r, stnam, (size_t)i); |
|
|
if (NULL == res) { |
if (NULL == res) { |
cp -= maxl ? 1 : 0; |
/* TODO: keep track of the correct position. */ |
continue; |
mandoc_msg(MANDOCERR_BADESCAPE, r->parse, ln, pos, NULL); |
|
res = ""; |
} |
} |
|
|
/* Replace the escape sequence by the string. */ |
/* Replace the escape sequence by the string. */ |
Line 491 roff_parseln(struct roff *r, int ln, char **bufp, |
|
Line 496 roff_parseln(struct roff *r, int ln, char **bufp, |
|
* words to fill in. |
* words to fill in. |
*/ |
*/ |
|
|
if (r->first_string && ! roff_res(r, bufp, szp, pos)) |
if (r->first_string && ! roff_res(r, bufp, szp, ln, pos)) |
return(ROFF_REPARSE); |
return(ROFF_REPARSE); |
|
|
ppos = pos; |
ppos = pos; |