version 1.70, 2010/05/08 07:30:19 |
version 1.76, 2010/05/14 17:31:25 |
|
|
}; |
}; |
|
|
static int check_parent(PRE_ARGS, enum mdoct, enum mdoc_type); |
static int check_parent(PRE_ARGS, enum mdoct, enum mdoc_type); |
static int check_msec(PRE_ARGS, ...); |
|
static int check_sec(PRE_ARGS, ...); |
static int check_sec(PRE_ARGS, ...); |
static int check_stdarg(PRE_ARGS); |
static int check_stdarg(PRE_ARGS); |
static int check_text(struct mdoc *, int, int, const char *); |
static int check_text(struct mdoc *, int, int, const char *); |
Line 60 static int err_child_gt(struct mdoc *, const char *, |
|
Line 59 static int err_child_gt(struct mdoc *, const char *, |
|
static int warn_child_gt(struct mdoc *, const char *, int); |
static int warn_child_gt(struct mdoc *, const char *, int); |
static int err_child_eq(struct mdoc *, const char *, int); |
static int err_child_eq(struct mdoc *, const char *, int); |
static int warn_child_eq(struct mdoc *, const char *, int); |
static int warn_child_eq(struct mdoc *, const char *, int); |
static int warn_print(struct mdoc *, int, int); |
|
static int warn_count(struct mdoc *, const char *, |
static int warn_count(struct mdoc *, const char *, |
int, const char *, int); |
int, const char *, int); |
static int err_count(struct mdoc *, const char *, |
static int err_count(struct mdoc *, const char *, |
Line 101 static int pre_bl(PRE_ARGS); |
|
Line 99 static int pre_bl(PRE_ARGS); |
|
static int pre_dd(PRE_ARGS); |
static int pre_dd(PRE_ARGS); |
static int pre_display(PRE_ARGS); |
static int pre_display(PRE_ARGS); |
static int pre_dt(PRE_ARGS); |
static int pre_dt(PRE_ARGS); |
static int pre_ex(PRE_ARGS); |
|
static int pre_fd(PRE_ARGS); |
static int pre_fd(PRE_ARGS); |
static int pre_it(PRE_ARGS); |
static int pre_it(PRE_ARGS); |
static int pre_lb(PRE_ARGS); |
static int pre_lb(PRE_ARGS); |
Line 140 static v_pre pres_d1[] = { pre_display, NULL }; |
|
Line 137 static v_pre pres_d1[] = { pre_display, NULL }; |
|
static v_pre pres_dd[] = { pre_dd, NULL }; |
static v_pre pres_dd[] = { pre_dd, NULL }; |
static v_pre pres_dt[] = { pre_dt, NULL }; |
static v_pre pres_dt[] = { pre_dt, NULL }; |
static v_pre pres_er[] = { NULL, NULL }; |
static v_pre pres_er[] = { NULL, NULL }; |
static v_pre pres_ex[] = { pre_ex, NULL }; |
static v_pre pres_ex[] = { NULL, NULL }; |
static v_pre pres_fd[] = { pre_fd, NULL }; |
static v_pre pres_fd[] = { pre_fd, NULL }; |
static v_pre pres_it[] = { pre_it, NULL }; |
static v_pre pres_it[] = { pre_it, NULL }; |
static v_pre pres_lb[] = { pre_lb, NULL }; |
static v_pre pres_lb[] = { pre_lb, NULL }; |
Line 323 mdoc_valid_post(struct mdoc *mdoc) |
|
Line 320 mdoc_valid_post(struct mdoc *mdoc) |
|
} |
} |
|
|
|
|
static int |
|
warn_print(struct mdoc *m, int ln, int pos) |
|
{ |
|
|
|
if (MDOC_IGN_CHARS & m->pflags) |
|
return(mdoc_pwarn(m, ln, pos, EPRINT)); |
|
return(mdoc_perr(m, ln, pos, EPRINT)); |
|
} |
|
|
|
|
|
static inline int |
static inline int |
warn_count(struct mdoc *m, const char *k, |
warn_count(struct mdoc *m, const char *k, |
int want, const char *v, int has) |
int want, const char *v, int has) |
Line 451 check_sec(PRE_ARGS, ...) |
|
Line 438 check_sec(PRE_ARGS, ...) |
|
|
|
|
|
static int |
static int |
check_msec(PRE_ARGS, ...) |
|
{ |
|
va_list ap; |
|
int msec; |
|
|
|
va_start(ap, n); |
|
for (;;) { |
|
/* LINTED */ |
|
if (0 == (msec = va_arg(ap, int))) |
|
break; |
|
if (msec != mdoc->meta.msec) |
|
continue; |
|
va_end(ap); |
|
return(1); |
|
} |
|
|
|
va_end(ap); |
|
return(mdoc_nwarn(mdoc, n, EBADMSEC)); |
|
} |
|
|
|
|
|
static int |
|
check_args(struct mdoc *m, const struct mdoc_node *n) |
check_args(struct mdoc *m, const struct mdoc_node *n) |
{ |
{ |
int i; |
int i; |
Line 518 check_text(struct mdoc *mdoc, int line, int pos, const |
|
Line 483 check_text(struct mdoc *mdoc, int line, int pos, const |
|
for ( ; *p; p++, pos++) { |
for ( ; *p; p++, pos++) { |
if ('\t' == *p) { |
if ('\t' == *p) { |
if ( ! (MDOC_LITERAL & mdoc->flags)) |
if ( ! (MDOC_LITERAL & mdoc->flags)) |
if ( ! warn_print(mdoc, line, pos)) |
if ( ! mdoc_pwarn(mdoc, line, pos, EPRINT)) |
return(0); |
return(0); |
} else if ( ! isprint((u_char)*p)) |
} else if ( ! isprint((u_char)*p)) |
if ( ! warn_print(mdoc, line, pos)) |
if ( ! mdoc_pwarn(mdoc, line, pos, EPRINT)) |
return(0); |
return(0); |
|
|
if ('\\' != *p) |
if ('\\' != *p) |
Line 789 pre_rv(PRE_ARGS) |
|
Line 754 pre_rv(PRE_ARGS) |
|
|
|
|
|
static int |
static int |
pre_ex(PRE_ARGS) |
|
{ |
|
|
|
if ( ! check_msec(mdoc, n, 1, 6, 8, 0)) |
|
return(0); |
|
return(check_stdarg(mdoc, n)); |
|
} |
|
|
|
|
|
static int |
|
pre_dt(PRE_ARGS) |
pre_dt(PRE_ARGS) |
{ |
{ |
|
|
Line 932 post_at(POST_ARGS) |
|
Line 887 post_at(POST_ARGS) |
|
return(mdoc_nerr(mdoc, mdoc->last, EATT)); |
return(mdoc_nerr(mdoc, mdoc->last, EATT)); |
if (mdoc_a2att(mdoc->last->child->string)) |
if (mdoc_a2att(mdoc->last->child->string)) |
return(1); |
return(1); |
return(mdoc_nerr(mdoc, mdoc->last, EATT)); |
return(mdoc_nwarn(mdoc, mdoc->last, EATT)); |
} |
} |
|
|
|
|
Line 1050 post_it(POST_ARGS) |
|
Line 1005 post_it(POST_ARGS) |
|
for (i = 0; c && MDOC_HEAD == c->type; c = c->next) |
for (i = 0; c && MDOC_HEAD == c->type; c = c->next) |
i++; |
i++; |
|
|
if (i < cols || i == (cols + 1)) { |
if (i < cols) { |
if ( ! mdoc_vwarn(mdoc, mdoc->last->line, |
if ( ! mdoc_vwarn(mdoc, mdoc->last->line, |
mdoc->last->pos, "column " |
mdoc->last->pos, "column " |
"mismatch: have %d, want %d", |
"mismatch: have %d, want %d", |
i, cols)) |
i, cols)) |
return(0); |
return(0); |
break; |
break; |
} else if (i == cols) |
} else if (i == cols || i == cols + 1) |
break; |
break; |
|
|
return(mdoc_verr(mdoc, mdoc->last->line, |
return(mdoc_verr(mdoc, mdoc->last->line, |
Line 1173 post_st(POST_ARGS) |
|
Line 1128 post_st(POST_ARGS) |
|
|
|
if (mdoc_a2st(mdoc->last->child->string)) |
if (mdoc_a2st(mdoc->last->child->string)) |
return(1); |
return(1); |
return(mdoc_nerr(mdoc, mdoc->last, EBADSTAND)); |
return(mdoc_nwarn(mdoc, mdoc->last, EBADSTAND)); |
} |
} |
|
|
|
|
Line 1297 post_sh_head(POST_ARGS) |
|
Line 1252 post_sh_head(POST_ARGS) |
|
return(mdoc_nerr(mdoc, n, ETOOLONG)); |
return(mdoc_nerr(mdoc, n, ETOOLONG)); |
} |
} |
|
|
sec = mdoc_atosec(buf); |
sec = mdoc_str2sec(buf); |
|
|
/* |
/* |
* Check: NAME should always be first, CUSTOM has no roles, |
* Check: NAME should always be first, CUSTOM has no roles, |
* non-CUSTOM has a conventional order to be followed. |
* non-CUSTOM has a conventional order to be followed. |
*/ |
*/ |
|
|
if (SEC_NAME != sec && SEC_NONE == mdoc->lastnamed && |
if (SEC_NAME != sec && SEC_NONE == mdoc->lastnamed) |
! mdoc_nwarn(mdoc, mdoc->last, ESECNAME)) |
if ( ! mdoc_nwarn(mdoc, mdoc->last, ESECNAME)) |
return(0); |
return(0); |
|
|
if (SEC_CUSTOM == sec) |
if (SEC_CUSTOM == sec) |
return(1); |
return(1); |
|
|
if (sec == mdoc->lastnamed) |
if (sec == mdoc->lastnamed) |
if ( ! mdoc_nwarn(mdoc, mdoc->last, ESECREP)) |
if ( ! mdoc_nwarn(mdoc, mdoc->last, ESECREP)) |
return(0); |
return(0); |
|
|
if (sec < mdoc->lastnamed) |
if (sec < mdoc->lastnamed) |
if ( ! mdoc_nwarn(mdoc, mdoc->last, ESECOOO)) |
if ( ! mdoc_nwarn(mdoc, mdoc->last, ESECOOO)) |
return(0); |
return(0); |