=================================================================== RCS file: /cvs/mandoc/mdoc_validate.c,v retrieving revision 1.37 retrieving revision 1.42 diff -u -p -r1.37 -r1.42 --- mandoc/mdoc_validate.c 2009/07/18 23:31:04 1.37 +++ mandoc/mdoc_validate.c 2009/08/20 13:22:48 1.42 @@ -1,4 +1,4 @@ -/* $Id: mdoc_validate.c,v 1.37 2009/07/18 23:31:04 kristaps Exp $ */ +/* $Id: mdoc_validate.c,v 1.42 2009/08/20 13:22:48 kristaps Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * @@ -81,7 +81,6 @@ static int hwarn_eq1(POST_ARGS); static int hwarn_le1(POST_ARGS); static int post_an(POST_ARGS); -static int post_args(POST_ARGS); static int post_at(POST_ARGS); static int post_bf(POST_ARGS); static int post_bl(POST_ARGS); @@ -118,7 +117,6 @@ static v_post posts_bd[] = { herr_eq0, bwarn_ge1, NUL 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 }; -static v_post posts_ex[] = { eerr_eq0, post_args, NULL }; static v_post posts_fo[] = { hwarn_eq1, bwarn_ge1, NULL }; static v_post posts_in[] = { eerr_eq1, NULL }; static v_post posts_it[] = { post_it, NULL }; @@ -127,7 +125,6 @@ static v_post posts_nd[] = { berr_ge1, NULL }; static v_post posts_nm[] = { post_nm, NULL }; static v_post posts_notext[] = { eerr_eq0, NULL }; static v_post posts_pf[] = { eerr_eq1, NULL }; -static v_post posts_rv[] = { eerr_eq0, post_args, NULL }; static v_post posts_sh[] = { herr_ge1, bwarn_ge1, post_sh, NULL }; static v_post posts_sp[] = { post_sp, NULL }; static v_post posts_ss[] = { herr_ge1, NULL }; @@ -176,7 +173,7 @@ const struct valids mdoc_valids[MDOC_MAX] = { { NULL, NULL }, /* Dv */ { pres_er, posts_text }, /* Er */ { NULL, NULL }, /* Ev */ - { pres_ex, posts_ex }, /* Ex */ + { pres_ex, NULL }, /* Ex */ { NULL, NULL }, /* Fa */ { pres_fd, posts_wtext }, /* Fd */ { NULL, NULL }, /* Fl */ @@ -190,7 +187,7 @@ const struct valids mdoc_valids[MDOC_MAX] = { { NULL, posts_wline }, /* Op */ { NULL, NULL }, /* Ot */ { NULL, NULL }, /* Pa */ - { pres_rv, posts_rv }, /* Rv */ + { pres_rv, NULL }, /* Rv */ { NULL, posts_st }, /* St */ { NULL, NULL }, /* Va */ { NULL, posts_text }, /* Vt */ @@ -912,7 +909,7 @@ post_an(POST_ARGS) if (mdoc->last->args) { if (NULL == mdoc->last->child) return(1); - return(mdoc_nerr(mdoc, mdoc->last, ELINE)); + return(mdoc_nerr(mdoc, mdoc->last, ENOLINE)); } if (mdoc->last->child) @@ -922,16 +919,6 @@ post_an(POST_ARGS) static int -post_args(POST_ARGS) -{ - - if (mdoc->last->args) - return(1); - return(mdoc_nerr(mdoc, mdoc->last, ELINE)); -} - - -static int post_it(POST_ARGS) { int type, i, cols; @@ -1028,11 +1015,20 @@ post_it(POST_ARGS) c = mdoc->last->child; for (i = 0; c && MDOC_HEAD == c->type; c = c->next) i++; - if (i == cols) + + if (i < cols || i == (cols + 1)) { + if ( ! mdoc_vwarn(mdoc, mdoc->last->line, + mdoc->last->pos, "column " + "mismatch: have %d, want %d", + i, cols)) + return(0); break; - return(mdoc_verr(mdoc, mdoc->last->line, mdoc->last->pos, - "column mismatch (have %d, want %d)", - i, cols)); + } else if (i == cols) + break; + + return(mdoc_verr(mdoc, mdoc->last->line, + mdoc->last->pos, "column mismatch: " + "have %d, want %d", i, cols)); default: break; } @@ -1210,6 +1206,7 @@ post_sh_body(POST_ARGS) return(0); } + assert(n); if (MDOC_BLOCK == n->type && MDOC_Nd == n->tok) return(1); return(mdoc_nwarn(mdoc, mdoc->last, ENAMESECINC));