=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/mdoc_validate.c,v retrieving revision 1.141 retrieving revision 1.142 diff -c -r1.141 -r1.142 *** src/usr.bin/mandoc/mdoc_validate.c 2014/07/02 20:18:42 1.141 --- src/usr.bin/mandoc/mdoc_validate.c 2014/07/03 23:23:45 1.142 *************** *** 1,4 **** ! /* $Id: mdoc_validate.c,v 1.141 2014/07/02 20:18:42 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze --- 1,4 ---- ! /* $Id: mdoc_validate.c,v 1.142 2014/07/03 23:23:45 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze *************** *** 1266,1292 **** { int i, cols; enum mdoc_list lt; ! struct mdoc_node *n, *c; enum mandocerr er; ! if (MDOC_BLOCK != mdoc->last->type) return(1); ! n = mdoc->last->parent->parent; ! lt = n->norm->Bl.type; if (LIST__NONE == lt) { ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_LISTTYPE); return(1); } switch (lt) { case LIST_tag: ! if (mdoc->last->head->child) ! break; ! /* FIXME: give this a dummy value. */ ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOARGS); ! break; case LIST_hang: /* FALLTHROUGH */ case LIST_ohang: --- 1266,1289 ---- { int i, cols; enum mdoc_list lt; ! struct mdoc_node *nbl, *nit, *nch; enum mandocerr er; ! nit = mdoc->last; ! if (MDOC_BLOCK != nit->type) return(1); ! nbl = nit->parent->parent; ! lt = nbl->norm->Bl.type; if (LIST__NONE == lt) { ! mdoc_nmsg(mdoc, nit, MANDOCERR_LISTTYPE); return(1); } switch (lt) { case LIST_tag: ! /* FALLTHROUGH */ case LIST_hang: /* FALLTHROUGH */ case LIST_ohang: *************** *** 1294,1301 **** case LIST_inset: /* FALLTHROUGH */ case LIST_diag: ! if (NULL == mdoc->last->head->child) ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOARGS); break; case LIST_bullet: /* FALLTHROUGH */ --- 1291,1300 ---- case LIST_inset: /* FALLTHROUGH */ case LIST_diag: ! if (NULL == nit->head->child) ! mandoc_msg(MANDOCERR_IT_NOHEAD, ! mdoc->parse, nit->line, nit->pos, ! mdoc_argnames[nbl->args->argv[0].arg]); break; case LIST_bullet: /* FALLTHROUGH */ *************** *** 1304,1326 **** case LIST_enum: /* FALLTHROUGH */ case LIST_hyphen: ! if (NULL == mdoc->last->body->child) ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOBODY); /* FALLTHROUGH */ case LIST_item: ! if (mdoc->last->head->child) ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_ARGSLOST); break; case LIST_column: ! cols = (int)n->norm->Bl.ncols; ! assert(NULL == mdoc->last->head->child); ! if (NULL == mdoc->last->body->child) ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_NOBODY); ! for (i = 0, c = mdoc->last->child; c; c = c->next) ! if (MDOC_BODY == c->type) i++; if (i < cols) --- 1303,1325 ---- case LIST_enum: /* FALLTHROUGH */ case LIST_hyphen: ! if (NULL == nit->body->child) ! mdoc_nmsg(mdoc, nit, MANDOCERR_NOBODY); /* FALLTHROUGH */ case LIST_item: ! if (NULL != nit->head->child) ! mdoc_nmsg(mdoc, nit, MANDOCERR_ARGSLOST); break; case LIST_column: ! cols = (int)nbl->norm->Bl.ncols; ! assert(NULL == nit->head->child); ! if (NULL == nit->body->child) ! mdoc_nmsg(mdoc, nit, MANDOCERR_NOBODY); ! for (i = 0, nch = nit->child; nch; nch = nch->next) ! if (MDOC_BODY == nch->type) i++; if (i < cols) *************** *** 1330,1337 **** else er = MANDOCERR_SYNTARGCOUNT; ! mandoc_vmsg(er, mdoc->parse, ! mdoc->last->line, mdoc->last->pos, "columns == %d (have %d)", cols, i); return(MANDOCERR_ARGCOUNT == er); default: --- 1329,1335 ---- else er = MANDOCERR_SYNTARGCOUNT; ! mandoc_vmsg(er, mdoc->parse, nit->line, nit->pos, "columns == %d (have %d)", cols, i); return(MANDOCERR_ARGCOUNT == er); default: