=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/mdoc_validate.c,v retrieving revision 1.136 retrieving revision 1.137 diff -c -r1.136 -r1.137 *** src/usr.bin/mandoc/mdoc_validate.c 2014/07/02 03:47:07 1.136 --- src/usr.bin/mandoc/mdoc_validate.c 2014/07/02 05:51:49 1.137 *************** *** 1,4 **** ! /* $Id: mdoc_validate.c,v 1.136 2014/07/02 03:47:07 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze --- 1,4 ---- ! /* $Id: mdoc_validate.c,v 1.137 2014/07/02 05:51:49 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze *************** *** 1381,1392 **** continue; } if (NULL == ni->next) { ! mdoc_nmsg(mdoc, nc, MANDOCERR_MOVEPAR); if ( ! mdoc_node_relink(mdoc, nc)) return(0); } else if (0 == n->norm->Bl.comp && LIST_column != n->norm->Bl.type) { ! mdoc_nmsg(mdoc, nc, MANDOCERR_IGNPAR); mdoc_node_delete(mdoc, nc); } else break; --- 1381,1397 ---- continue; } if (NULL == ni->next) { ! mandoc_msg(MANDOCERR_PAR_MOVE, ! mdoc->parse, nc->line, nc->pos, ! mdoc_macronames[nc->tok]); if ( ! mdoc_node_relink(mdoc, nc)) return(0); } else if (0 == n->norm->Bl.comp && LIST_column != n->norm->Bl.type) { ! mandoc_vmsg(MANDOCERR_PAR_SKIP, ! mdoc->parse, nc->line, nc->pos, ! "%s before It", ! mdoc_macronames[nc->tok]); mdoc_node_delete(mdoc, nc); } else break; *************** *** 2074,2086 **** if (NULL != (np = mdoc->last->child)) if (MDOC_Pp == np->tok || MDOC_Lp == np->tok) { ! mdoc_nmsg(mdoc, np, MANDOCERR_IGNPAR); mdoc_node_delete(mdoc, np); } if (NULL != (np = mdoc->last->last)) if (MDOC_Pp == np->tok || MDOC_Lp == np->tok) { ! mdoc_nmsg(mdoc, np, MANDOCERR_IGNPAR); mdoc_node_delete(mdoc, np); } --- 2079,2097 ---- if (NULL != (np = mdoc->last->child)) if (MDOC_Pp == np->tok || MDOC_Lp == np->tok) { ! mandoc_vmsg(MANDOCERR_PAR_SKIP, ! mdoc->parse, np->line, np->pos, ! "%s after %s", mdoc_macronames[np->tok], ! mdoc_macronames[mdoc->last->tok]); mdoc_node_delete(mdoc, np); } if (NULL != (np = mdoc->last->last)) if (MDOC_Pp == np->tok || MDOC_Lp == np->tok) { ! mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, ! np->line, np->pos, "%s at the end of %s", ! mdoc_macronames[np->tok], ! mdoc_macronames[mdoc->last->tok]); mdoc_node_delete(mdoc, np); } *************** *** 2112,2118 **** if (MDOC_It == n->tok && n->parent->norm->Bl.comp) return(1); ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_IGNPAR); mdoc_node_delete(mdoc, mdoc->last); return(1); } --- 2123,2132 ---- if (MDOC_It == n->tok && n->parent->norm->Bl.comp) return(1); ! mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, ! mdoc->last->line, mdoc->last->pos, ! "%s before %s", mdoc_macronames[mdoc->last->tok], ! mdoc_macronames[n->tok]); mdoc_node_delete(mdoc, mdoc->last); return(1); } *************** *** 2120,2144 **** static int post_par(POST_ARGS) { if (MDOC_ELEM != mdoc->last->type && MDOC_BLOCK != mdoc->last->type) return(1); ! if (NULL == mdoc->last->prev) { ! if (MDOC_Sh != mdoc->last->parent->tok && ! MDOC_Ss != mdoc->last->parent->tok) return(1); } else { ! if (MDOC_Pp != mdoc->last->prev->tok && ! MDOC_Lp != mdoc->last->prev->tok && (MDOC_br != mdoc->last->tok || ! (MDOC_sp != mdoc->last->prev->tok && ! MDOC_br != mdoc->last->prev->tok))) return(1); } ! mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_IGNPAR); mdoc_node_delete(mdoc, mdoc->last); return(1); } --- 2134,2160 ---- static int post_par(POST_ARGS) { + struct mdoc_node *np; if (MDOC_ELEM != mdoc->last->type && MDOC_BLOCK != mdoc->last->type) return(1); ! if (NULL == (np = mdoc->last->prev)) { ! np = mdoc->last->parent; ! if (MDOC_Sh != np->tok && MDOC_Ss != np->tok) return(1); } else { ! if (MDOC_Pp != np->tok && MDOC_Lp != np->tok && (MDOC_br != mdoc->last->tok || ! (MDOC_sp != np->tok && MDOC_br != np->tok))) return(1); } ! mandoc_vmsg(MANDOCERR_PAR_SKIP, mdoc->parse, ! mdoc->last->line, mdoc->last->pos, ! "%s after %s", mdoc_macronames[mdoc->last->tok], ! mdoc_macronames[np->tok]); mdoc_node_delete(mdoc, mdoc->last); return(1); }