=================================================================== RCS file: /cvs/mandoc/mdoc_validate.c,v retrieving revision 1.70 retrieving revision 1.76 diff -u -p -r1.70 -r1.76 --- mandoc/mdoc_validate.c 2010/05/08 07:30:19 1.70 +++ mandoc/mdoc_validate.c 2010/05/14 17:31:25 1.76 @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.70 2010/05/08 07:30:19 kristaps Exp $ */ +/* $Id: mdoc_validate.c,v 1.76 2010/05/14 17:31:25 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -45,7 +45,6 @@ struct valids { }; 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_stdarg(PRE_ARGS); static int check_text(struct mdoc *, int, int, const char *); @@ -60,7 +59,6 @@ static int err_child_gt(struct mdoc *, const char *, static int warn_child_gt(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_print(struct mdoc *, int, int); static int warn_count(struct mdoc *, const char *, int, const char *, int); static int err_count(struct mdoc *, const char *, @@ -101,7 +99,6 @@ static int pre_bl(PRE_ARGS); static int pre_dd(PRE_ARGS); static int pre_display(PRE_ARGS); static int pre_dt(PRE_ARGS); -static int pre_ex(PRE_ARGS); static int pre_fd(PRE_ARGS); static int pre_it(PRE_ARGS); static int pre_lb(PRE_ARGS); @@ -140,7 +137,7 @@ static v_pre pres_d1[] = { pre_display, NULL }; static v_pre pres_dd[] = { pre_dd, NULL }; static v_pre pres_dt[] = { pre_dt, 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_it[] = { pre_it, NULL }; static v_pre pres_lb[] = { pre_lb, NULL }; @@ -323,16 +320,6 @@ 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 warn_count(struct mdoc *m, const char *k, int want, const char *v, int has) @@ -451,28 +438,6 @@ check_sec(PRE_ARGS, ...) 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) { int i; @@ -518,10 +483,10 @@ check_text(struct mdoc *mdoc, int line, int pos, const for ( ; *p; p++, pos++) { if ('\t' == *p) { if ( ! (MDOC_LITERAL & mdoc->flags)) - if ( ! warn_print(mdoc, line, pos)) + if ( ! mdoc_pwarn(mdoc, line, pos, EPRINT)) return(0); } else if ( ! isprint((u_char)*p)) - if ( ! warn_print(mdoc, line, pos)) + if ( ! mdoc_pwarn(mdoc, line, pos, EPRINT)) return(0); if ('\\' != *p) @@ -789,16 +754,6 @@ pre_rv(PRE_ARGS) 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) { @@ -932,7 +887,7 @@ post_at(POST_ARGS) return(mdoc_nerr(mdoc, mdoc->last, EATT)); if (mdoc_a2att(mdoc->last->child->string)) return(1); - return(mdoc_nerr(mdoc, mdoc->last, EATT)); + return(mdoc_nwarn(mdoc, mdoc->last, EATT)); } @@ -1050,14 +1005,14 @@ post_it(POST_ARGS) for (i = 0; c && MDOC_HEAD == c->type; c = c->next) i++; - if (i < cols || i == (cols + 1)) { + if (i < cols) { if ( ! mdoc_vwarn(mdoc, mdoc->last->line, mdoc->last->pos, "column " "mismatch: have %d, want %d", i, cols)) return(0); break; - } else if (i == cols) + } else if (i == cols || i == cols + 1) break; return(mdoc_verr(mdoc, mdoc->last->line, @@ -1173,7 +1128,7 @@ post_st(POST_ARGS) if (mdoc_a2st(mdoc->last->child->string)) return(1); - return(mdoc_nerr(mdoc, mdoc->last, EBADSTAND)); + return(mdoc_nwarn(mdoc, mdoc->last, EBADSTAND)); } @@ -1297,21 +1252,24 @@ post_sh_head(POST_ARGS) return(mdoc_nerr(mdoc, n, ETOOLONG)); } - sec = mdoc_atosec(buf); + sec = mdoc_str2sec(buf); /* * Check: NAME should always be first, CUSTOM has no roles, * non-CUSTOM has a conventional order to be followed. */ - if (SEC_NAME != sec && SEC_NONE == mdoc->lastnamed && - ! mdoc_nwarn(mdoc, mdoc->last, ESECNAME)) - return(0); + if (SEC_NAME != sec && SEC_NONE == mdoc->lastnamed) + if ( ! mdoc_nwarn(mdoc, mdoc->last, ESECNAME)) + return(0); + if (SEC_CUSTOM == sec) return(1); + if (sec == mdoc->lastnamed) if ( ! mdoc_nwarn(mdoc, mdoc->last, ESECREP)) return(0); + if (sec < mdoc->lastnamed) if ( ! mdoc_nwarn(mdoc, mdoc->last, ESECOOO)) return(0);