=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/mdoc_validate.c,v retrieving revision 1.189 retrieving revision 1.190 diff -c -r1.189 -r1.190 *** src/usr.bin/mandoc/mdoc_validate.c 2015/02/06 02:04:35 1.189 --- src/usr.bin/mandoc/mdoc_validate.c 2015/02/06 03:31:11 1.190 *************** *** 1,4 **** ! /* $OpenBSD: mdoc_validate.c,v 1.189 2015/02/06 02:04:35 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2015 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: mdoc_validate.c,v 1.190 2015/02/06 03:31:11 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2015 Ingo Schwarze *************** *** 65,71 **** static size_t macro2len(enum mdoct); static void rewrite_macro2len(char **); - static void bwarn_ge1(POST_ARGS); static void ewarn_eq1(POST_ARGS); static void ewarn_ge1(POST_ARGS); --- 65,70 ---- *************** *** 149,155 **** { NULL, NULL }, /* Ev */ { pre_std, post_ex }, /* Ex */ { NULL, post_fa }, /* Fa */ ! { NULL, ewarn_ge1 }, /* Fd */ { NULL, NULL }, /* Fl */ { NULL, post_fn }, /* Fn */ { NULL, NULL }, /* Ft */ --- 148,154 ---- { NULL, NULL }, /* Ev */ { pre_std, post_ex }, /* Ex */ { NULL, post_fa }, /* Fa */ ! { NULL, NULL }, /* Fd */ { NULL, NULL }, /* Fl */ { NULL, post_fn }, /* Fn */ { NULL, NULL }, /* Ft */ *************** *** 400,411 **** } static void - bwarn_ge1(POST_ARGS) - { - check_count(mdoc, MDOC_BODY, CHECK_GT, 0); - } - - static void ewarn_eq1(POST_ARGS) { check_count(mdoc, MDOC_ELEM, CHECK_EQ, 1); --- 399,404 ---- *************** *** 971,981 **** static void post_fo(POST_ARGS) { ! check_count(mdoc, MDOC_HEAD, CHECK_EQ, 1); ! bwarn_ge1(mdoc); ! if (mdoc->last->type == MDOC_HEAD && mdoc->last->nchild) ! post_fname(mdoc); } static void --- 964,990 ---- static void post_fo(POST_ARGS) { + const struct mdoc_node *n; ! n = mdoc->last; ! ! if (n->type != MDOC_HEAD) ! return; ! ! if (n->child == NULL) { ! mandoc_msg(MANDOCERR_FO_NOHEAD, mdoc->parse, ! n->line, n->pos, "Fo"); ! return; ! } ! if (n->child != n->last) { ! mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse, ! n->child->next->line, n->child->next->pos, ! "Fo ... %s", n->child->next->string); ! while (n->child != n->last) ! mdoc_node_delete(mdoc, n->last); ! } ! ! post_fname(mdoc); } static void