version 1.170, 2011/09/18 23:51:31 |
version 1.172, 2011/10/24 21:41:45 |
Line 186 static void roff_openeqn(struct roff *, const char * |
|
Line 186 static void roff_openeqn(struct roff *, const char * |
|
int, int, const char *); |
int, int, const char *); |
static enum rofft roff_parse(struct roff *, const char *, int *); |
static enum rofft roff_parse(struct roff *, const char *, int *); |
static enum rofferr roff_parsetext(char *); |
static enum rofferr roff_parsetext(char *); |
static void roff_res(struct roff *, |
static enum rofferr roff_res(struct roff *, |
char **, size_t *, int, 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 *, |
Line 432 roff_alloc(struct mparse *parse) |
|
Line 432 roff_alloc(struct mparse *parse) |
|
* is processed. |
* is processed. |
* This also checks the syntax of regular escapes. |
* This also checks the syntax of regular escapes. |
*/ |
*/ |
static void |
static enum rofferr |
roff_res(struct roff *r, char **bufp, size_t *szp, int ln, int pos) |
roff_res(struct roff *r, char **bufp, size_t *szp, int ln, int pos) |
{ |
{ |
enum mandoc_esc esc; |
enum mandoc_esc esc; |
|
|
*/ |
*/ |
|
|
if ('\0' == *cp) |
if ('\0' == *cp) |
return; |
return(ROFF_CONT); |
|
|
if ('*' != *cp) { |
if ('*' != *cp) { |
res = cp; |
res = cp; |
|
|
mandoc_msg |
mandoc_msg |
(MANDOCERR_BADESCAPE, r->parse, |
(MANDOCERR_BADESCAPE, r->parse, |
ln, (int)(stesc - *bufp), NULL); |
ln, (int)(stesc - *bufp), NULL); |
return; |
return(ROFF_CONT); |
} |
} |
|
|
cp++; |
cp++; |
|
|
|
|
switch (*cp) { |
switch (*cp) { |
case ('\0'): |
case ('\0'): |
return; |
return(ROFF_CONT); |
case ('('): |
case ('('): |
cp++; |
cp++; |
maxl = 2; |
maxl = 2; |
|
|
(MANDOCERR_BADESCAPE, |
(MANDOCERR_BADESCAPE, |
r->parse, ln, |
r->parse, ln, |
(int)(stesc - *bufp), NULL); |
(int)(stesc - *bufp), NULL); |
return; |
return(ROFF_CONT); |
} |
} |
if (0 == maxl && ']' == *cp) |
if (0 == maxl && ']' == *cp) |
break; |
break; |
|
|
|
|
/* Just leave the string unexpanded. */ |
/* Just leave the string unexpanded. */ |
mandoc_msg(MANDOCERR_ROFFLOOP, r->parse, ln, pos, NULL); |
mandoc_msg(MANDOCERR_ROFFLOOP, r->parse, ln, pos, NULL); |
return; |
return(ROFF_IGN); |
} |
} |
|
return(ROFF_CONT); |
} |
} |
|
|
/* |
/* |
|
|
static enum rofferr |
static enum rofferr |
roff_parsetext(char *p) |
roff_parsetext(char *p) |
{ |
{ |
char l, r; |
|
size_t sz; |
size_t sz; |
const char *start; |
const char *start; |
enum mandoc_esc esc; |
enum mandoc_esc esc; |
Line 583 roff_parsetext(char *p) |
|
Line 583 roff_parsetext(char *p) |
|
continue; |
continue; |
} |
} |
|
|
l = *(p - 1); |
if (isalpha((unsigned char)p[-1]) && |
r = *(p + 1); |
isalpha((unsigned char)p[1])) |
if ('\\' != l && |
|
'\t' != r && '\t' != l && |
|
' ' != r && ' ' != l && |
|
'-' != r && '-' != l && |
|
! isdigit((unsigned char)l) && |
|
! isdigit((unsigned char)r)) |
|
*p = ASCII_HYPH; |
*p = ASCII_HYPH; |
p++; |
p++; |
} |
} |
Line 611 roff_parseln(struct roff *r, int ln, char **bufp, |
|
Line 605 roff_parseln(struct roff *r, int ln, char **bufp, |
|
* words to fill in. |
* words to fill in. |
*/ |
*/ |
|
|
roff_res(r, bufp, szp, ln, pos); |
e = roff_res(r, bufp, szp, ln, pos); |
|
if (ROFF_IGN == e) |
|
return(e); |
|
assert(ROFF_CONT == e); |
|
|
ppos = pos; |
ppos = pos; |
ctl = mandoc_getcontrol(*bufp, &pos); |
ctl = mandoc_getcontrol(*bufp, &pos); |