=================================================================== RCS file: /cvs/mandoc/mdoc_validate.c,v retrieving revision 1.64 retrieving revision 1.68 diff -u -p -r1.64 -r1.68 --- mandoc/mdoc_validate.c 2010/04/06 11:28:17 1.64 +++ mandoc/mdoc_validate.c 2010/04/07 18:50:35 1.68 @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.64 2010/04/06 11:28:17 kristaps Exp $ */ +/* $Id: mdoc_validate.c,v 1.68 2010/04/07 18:50:35 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -77,6 +77,7 @@ static int ewarn_ge1(POST_ARGS); static int herr_eq0(POST_ARGS); static int herr_ge1(POST_ARGS); static int hwarn_eq1(POST_ARGS); +static int hwarn_eq0(POST_ARGS); static int hwarn_le1(POST_ARGS); static int post_an(POST_ARGS); @@ -101,7 +102,6 @@ static int pre_cd(PRE_ARGS); static int pre_dd(PRE_ARGS); static int pre_display(PRE_ARGS); static int pre_dt(PRE_ARGS); -static int pre_er(PRE_ARGS); static int pre_ex(PRE_ARGS); static int pre_fd(PRE_ARGS); static int pre_it(PRE_ARGS); @@ -113,7 +113,7 @@ static int pre_ss(PRE_ARGS); static v_post posts_an[] = { post_an, NULL }; static v_post posts_at[] = { post_at, NULL }; -static v_post posts_bd[] = { herr_eq0, bwarn_ge1, NULL }; +static v_post posts_bd[] = { hwarn_eq0, bwarn_ge1, NULL }; static v_post posts_bf[] = { hwarn_le1, post_bf, NULL }; static v_post posts_bl[] = { bwarn_ge1, post_bl, NULL }; static v_post posts_bool[] = { eerr_eq1, ebool, NULL }; @@ -141,7 +141,7 @@ static v_pre pres_cd[] = { pre_cd, NULL }; 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[] = { pre_er, NULL }; +static v_pre pres_er[] = { NULL, NULL }; static v_pre pres_ex[] = { pre_ex, NULL }; static v_pre pres_fd[] = { pre_fd, NULL }; static v_pre pres_it[] = { pre_it, NULL }; @@ -414,6 +414,7 @@ CHECK_HEAD_DEFN(eq0, err, err_child_eq, 0) /* herr_eq0 CHECK_HEAD_DEFN(le1, warn, warn_child_lt, 2) /* hwarn_le1() */ CHECK_HEAD_DEFN(ge1, err, err_child_gt, 0) /* herr_ge1() */ CHECK_HEAD_DEFN(eq1, warn, warn_child_eq, 1) /* hwarn_eq1() */ +CHECK_HEAD_DEFN(eq0, warn, warn_child_eq, 0) /* hwarn_eq0() */ static int @@ -802,18 +803,10 @@ pre_ex(PRE_ARGS) static int -pre_er(PRE_ARGS) -{ - - return(check_msec(mdoc, n, 2, 3, 9, 0)); -} - - -static int pre_cd(PRE_ARGS) { - return(check_msec(mdoc, n, 4, 0)); + return(check_msec(mdoc, n, 4, 9, 0)); } @@ -1095,22 +1088,23 @@ post_bl_head(POST_ARGS) { int i; const struct mdoc_node *n; + const struct mdoc_argv *a; n = mdoc->last->parent; assert(n->args); - for (i = 0; i < (int)n->args->argc; i++) - if (n->args->argv[i].arg == MDOC_Column) - break; + for (i = 0; i < (int)n->args->argc; i++) { + a = &n->args->argv[i]; + if (a->arg == MDOC_Column) { + if (a->sz && mdoc->last->nchild) + return(mdoc_nerr(mdoc, n, ECOLMIS)); + return(1); + } + } - if (i == (int)n->args->argc && n->nchild) - return(warn_count(mdoc, "==", 0, - "line arguments", n->nchild)); - - if (n->args->argv[i].sz && mdoc->last->child) - return(mdoc_nerr(mdoc, n, ECOLMIS)); - - return(1); + if (0 == (i = mdoc->last->nchild)) + return(1); + return(warn_count(mdoc, "==", 0, "line arguments", i)); }