version 1.85, 2009/03/16 23:37:28 |
version 1.86, 2009/03/20 15:14:01 |
|
|
#define POST_ARGS struct mdoc *mdoc |
#define POST_ARGS struct mdoc *mdoc |
|
|
enum merr { |
enum merr { |
|
EESCAPE, |
EPRINT, |
EPRINT, |
ENODATA, |
ENODATA, |
ENOPROLOGUE, |
ENOPROLOGUE, |
|
|
}; |
}; |
|
|
enum mwarn { |
enum mwarn { |
|
WESCAPE, |
WWRONGMSEC, |
WWRONGMSEC, |
WSECOOO, |
WSECOOO, |
WSECREP, |
WSECREP, |
Line 192 static v_post posts_at[] = { post_at, NULL }; |
|
Line 194 static v_post posts_at[] = { post_at, NULL }; |
|
static v_post posts_xr[] = { eerr_ge1, eerr_le2, NULL }; |
static v_post posts_xr[] = { eerr_ge1, eerr_le2, NULL }; |
static v_post posts_nm[] = { post_nm, NULL }; |
static v_post posts_nm[] = { post_nm, NULL }; |
static v_post posts_bf[] = { hwarn_le1, post_bf, NULL }; |
static v_post posts_bf[] = { hwarn_le1, post_bf, NULL }; |
static v_post posts_rs[] = { herr_eq0, bwarn_ge1, NULL }; |
|
static v_post posts_fo[] = { hwarn_eq1, bwarn_ge1, NULL }; |
static v_post posts_fo[] = { hwarn_eq1, bwarn_ge1, NULL }; |
static v_post posts_bk[] = { herr_eq0, bwarn_ge1, NULL }; |
|
static v_post posts_fd[] = { ewarn_ge1, NULL }; |
|
|
|
const struct valids mdoc_valids[MDOC_MAX] = { |
const struct valids mdoc_valids[MDOC_MAX] = { |
{ NULL, NULL }, /* \" */ |
{ NULL, NULL }, /* \" */ |
Line 222 const struct valids mdoc_valids[MDOC_MAX] = { |
|
Line 221 const struct valids mdoc_valids[MDOC_MAX] = { |
|
{ NULL, posts_text }, /* Ev */ |
{ NULL, posts_text }, /* Ev */ |
{ pres_ex, posts_ex }, /* Ex */ |
{ pres_ex, posts_ex }, /* Ex */ |
{ NULL, posts_text }, /* Fa */ |
{ NULL, posts_text }, /* Fa */ |
{ pres_fd, posts_fd }, /* Fd */ |
{ pres_fd, posts_wtext }, /* Fd */ |
{ NULL, NULL }, /* Fl */ |
{ NULL, NULL }, /* Fl */ |
{ NULL, posts_text }, /* Fn */ |
{ NULL, posts_text }, /* Fn */ |
{ NULL, posts_wtext }, /* Ft */ |
{ NULL, posts_wtext }, /* Ft */ |
Line 283 const struct valids mdoc_valids[MDOC_MAX] = { |
|
Line 282 const struct valids mdoc_valids[MDOC_MAX] = { |
|
{ NULL, NULL }, /* Qo */ |
{ NULL, NULL }, /* Qo */ |
{ NULL, posts_wline }, /* Qq */ |
{ NULL, posts_wline }, /* Qq */ |
{ NULL, NULL }, /* Re */ |
{ NULL, NULL }, /* Re */ |
{ NULL, posts_rs }, /* Rs */ |
{ NULL, posts_wline }, /* Rs */ |
{ NULL, NULL }, /* Sc */ |
{ NULL, NULL }, /* Sc */ |
{ NULL, NULL }, /* So */ |
{ NULL, NULL }, /* So */ |
{ NULL, posts_wline }, /* Sq */ |
{ NULL, posts_wline }, /* Sq */ |
Line 298 const struct valids mdoc_valids[MDOC_MAX] = { |
|
Line 297 const struct valids mdoc_valids[MDOC_MAX] = { |
|
{ NULL, NULL }, /* Fc */ |
{ NULL, NULL }, /* Fc */ |
{ NULL, NULL }, /* Oo */ |
{ NULL, NULL }, /* Oo */ |
{ NULL, NULL }, /* Oc */ |
{ NULL, NULL }, /* Oc */ |
{ NULL, posts_bk }, /* Bk */ |
{ NULL, posts_wline }, /* Bk */ |
{ NULL, NULL }, /* Ek */ |
{ NULL, NULL }, /* Ek */ |
{ NULL, posts_notext }, /* Bt */ |
{ NULL, posts_notext }, /* Bt */ |
{ NULL, NULL }, /* Hf */ |
{ NULL, NULL }, /* Hf */ |
Line 384 perr(struct mdoc *m, int line, int pos, enum merr type |
|
Line 383 perr(struct mdoc *m, int line, int pos, enum merr type |
|
|
|
p = NULL; |
p = NULL; |
switch (type) { |
switch (type) { |
|
case (EESCAPE): |
|
p = "invalid escape sequence"; |
|
break; |
case (EPRINT): |
case (EPRINT): |
p = "invalid character"; |
p = "invalid character"; |
break; |
break; |
Line 458 pwarn(struct mdoc *m, int line, int pos, enum mwarn ty |
|
Line 460 pwarn(struct mdoc *m, int line, int pos, enum mwarn ty |
|
p = "prologue macros out-of-order"; |
p = "prologue macros out-of-order"; |
c = WARN_COMPAT; |
c = WARN_COMPAT; |
break; |
break; |
|
case (WESCAPE): |
|
p = "invalid escape sequence"; |
|
break; |
case (WNOLINE): |
case (WNOLINE): |
p = "suggested no line arguments"; |
p = "suggested no line arguments"; |
break; |
break; |
Line 690 check_text(struct mdoc *mdoc, int line, int pos, const |
|
Line 695 check_text(struct mdoc *mdoc, int line, int pos, const |
|
size_t c; |
size_t c; |
|
|
/* FIXME: indicate deprecated escapes \*(xx and \*x. */ |
/* FIXME: indicate deprecated escapes \*(xx and \*x. */ |
/* FIXME: don't allow tabs unless in literal mode. */ |
|
|
|
for ( ; *p; p++) { |
for ( ; *p; p++) { |
if ('\t' != *p && ! isprint((u_char)*p)) |
if ('\t' == *p) { |
|
if ( ! (MDOC_LITERAL & mdoc->flags)) |
|
return(perr(mdoc, line, pos, EPRINT)); |
|
} else if ( ! isprint((u_char)*p)) |
return(perr(mdoc, line, pos, EPRINT)); |
return(perr(mdoc, line, pos, EPRINT)); |
|
|
if ('\\' != *p) |
if ('\\' != *p) |
continue; |
continue; |
|
|
if ((c = mdoc_isescape(p))) { |
if ((c = mdoc_isescape(p))) { |
p += (int)c - 1; |
p += (int)c - 1; |
continue; |
continue; |
} |
} |
if ( ! (MDOC_IGN_ESCAPE & mdoc->pflags)) |
if ( ! (MDOC_IGN_ESCAPE & mdoc->pflags)) |
return(mdoc_perr(mdoc, line, pos, |
return(perr(mdoc, line, pos, EESCAPE)); |
"invalid escape sequence")); |
if ( ! pwarn(mdoc, line, pos, WESCAPE)) |
if ( ! mdoc_pwarn(mdoc, line, pos, WARN_SYNTAX, |
|
"invalid escape sequence")) |
|
return(0); |
return(0); |
} |
} |
|
|