=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/mdoc_macro.c,v retrieving revision 1.43 retrieving revision 1.44 diff -c -r1.43 -r1.44 *** src/usr.bin/mandoc/mdoc_macro.c 2010/05/15 15:53:29 1.43 --- src/usr.bin/mandoc/mdoc_macro.c 2010/05/23 22:45:00 1.44 *************** *** 1,4 **** ! /* $Id: mdoc_macro.c,v 1.43 2010/05/15 15:53:29 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * --- 1,4 ---- ! /* $Id: mdoc_macro.c,v 1.44 2010/05/23 22:45:00 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * *************** *** 21,26 **** --- 21,27 ---- #include #include + #include "mandoc.h" #include "libmdoc.h" #include "libmandoc.h" *************** *** 191,196 **** --- 192,198 ---- int line, int pos, const struct mdoc_node *p) { const char *n, *t, *tt; + int rc; n = t = ""; tt = "block"; *************** *** 223,235 **** break; } ! if ( ! (MDOC_IGN_SCOPE & mdoc->pflags)) ! return(mdoc_verr(mdoc, line, pos, ! "%s scope breaks %s scope of %s", ! tt, t, n)); ! return(mdoc_vwarn(mdoc, line, pos, ! "%s scope breaks %s scope of %s", ! tt, t, n)); } --- 225,235 ---- break; } ! rc = mdoc_vmsg(mdoc, MANDOCERR_SCOPE, line, pos, ! "%s scope breaks %s of %s", tt, t, n); ! ! /* FIXME: logic should be in driver. */ ! return(MDOC_IGN_SCOPE & mdoc->pflags ? rc : 0); } *************** *** 252,258 **** continue; if ( ! (MDOC_EXPLICIT & mdoc_macros[n->tok].flags)) continue; ! return(mdoc_nerr(m, n, EOPEN)); } /* Rewind to the first. */ --- 252,259 ---- continue; if ( ! (MDOC_EXPLICIT & mdoc_macros[n->tok].flags)) continue; ! mdoc_nmsg(m, n, MANDOCERR_SYNTSCOPE); ! return(0); } /* Rewind to the first. */ *************** *** 584,590 **** return(1); if ( ! (MDOC_EXPLICIT & mdoc_macros[tok].flags)) return(1); ! return(mdoc_perr(m, line, ppos, ENOCTX)); } if (REWIND_REWIND == c) break; --- 585,593 ---- return(1); if ( ! (MDOC_EXPLICIT & mdoc_macros[tok].flags)) return(1); ! /* FIXME: shouldn't raise an error */ ! mdoc_pmsg(m, line, ppos, MANDOCERR_SYNTNOSCOPE); ! return(0); } if (REWIND_REWIND == c) break; *************** *** 679,686 **** } if ( ! (MDOC_CALLABLE & mdoc_macros[tok].flags)) { if (buf[*pos]) ! if ( ! mdoc_pwarn(m, line, ppos, ENOLINE)) return(0); if ( ! rew_sub(MDOC_BODY, m, tok, line, ppos)) --- 682,690 ---- } if ( ! (MDOC_CALLABLE & mdoc_macros[tok].flags)) { + /* FIXME: do this in validate */ if (buf[*pos]) ! if ( ! mdoc_pmsg(m, line, ppos, MANDOCERR_ARGSLOST)) return(0); if ( ! rew_sub(MDOC_BODY, m, tok, line, ppos)) *************** *** 824,830 **** return(0); } else if ( ! nc && 0 == cnt) { mdoc_argv_free(arg); ! if ( ! mdoc_pwarn(m, line, ppos, EIGNE)) return(0); } if ( ! mdoc_macro(m, ntok, line, la, pos, buf)) --- 828,834 ---- return(0); } else if ( ! nc && 0 == cnt) { mdoc_argv_free(arg); ! if ( ! mdoc_pmsg(m, line, ppos, MANDOCERR_MACROEMPTY)) return(0); } if ( ! mdoc_macro(m, ntok, line, la, pos, buf)) *************** *** 885,891 **** return(0); } else if ( ! nc && 0 == cnt) { mdoc_argv_free(arg); ! if ( ! mdoc_pwarn(m, line, ppos, EIGNE)) return(0); } --- 889,895 ---- return(0); } else if ( ! nc && 0 == cnt) { mdoc_argv_free(arg); ! if ( ! mdoc_pmsg(m, line, ppos, MANDOCERR_MACROEMPTY)) return(0); } *************** *** 1184,1190 **** if (body == n) break; ! if (NULL == n && ! mdoc_nwarn(m, body, EIMPBRK)) return(0); if (n && ! rew_last(m, body)) --- 1188,1194 ---- if (body == n) break; ! if (NULL == n && ! mdoc_nmsg(m, body, MANDOCERR_SCOPE)) return(0); if (n && ! rew_last(m, body)) *************** *** 1547,1553 **** obsolete(MACRO_PROT_ARGS) { ! return(mdoc_pwarn(m, line, ppos, EOBS)); } --- 1551,1557 ---- obsolete(MACRO_PROT_ARGS) { ! return(mdoc_pmsg(m, line, ppos, MANDOCERR_MACROOBS)); }