=================================================================== RCS file: /cvs/mandoc/mdoc.c,v retrieving revision 1.213 retrieving revision 1.217 diff -u -p -r1.213 -r1.217 --- mandoc/mdoc.c 2014/04/20 16:46:05 1.213 +++ mandoc/mdoc.c 2014/07/02 03:48:07 1.217 @@ -1,4 +1,4 @@ -/* $Id: mdoc.c,v 1.213 2014/04/20 16:46:05 schwarze Exp $ */ +/* $Id: mdoc.c,v 1.217 2014/07/02 03:48:07 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010, 2012, 2013, 2014 Ingo Schwarze @@ -35,7 +35,7 @@ #include "libmdoc.h" #include "libmandoc.h" -const char *const __mdoc_macronames[MDOC_MAX] = { +const char *const __mdoc_macronames[MDOC_MAX + 1] = { "Ap", "Dd", "Dt", "Os", "Sh", "Ss", "Pp", "D1", "Dl", "Bd", "Ed", "Bl", @@ -66,7 +66,7 @@ const char *const __mdoc_macronames[MDOC_MAX] = { "Lk", "Mt", "Brq", "Bro", "Brc", "%C", "Es", "En", "Dx", "%Q", "br", "sp", - "%U", "Ta", "ll", + "%U", "Ta", "ll", "text", }; const char *const __mdoc_argnames[MDOC_ARG_MAX] = { @@ -305,7 +305,8 @@ mdoc_macro(MACRO_PROT_ARGS) if (MDOC_PROLOGUE & mdoc_macros[tok].flags && MDOC_PBODY & mdoc->flags) { - mdoc_pmsg(mdoc, line, ppos, MANDOCERR_BADBODY); + mandoc_vmsg(MANDOCERR_PROLOG_ONLY, mdoc->parse, + line, ppos, "%s", mdoc_macronames[tok]); return(1); } @@ -313,7 +314,8 @@ mdoc_macro(MACRO_PROT_ARGS) if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) && ! (MDOC_PBODY & mdoc->flags)) { - mdoc_pmsg(mdoc, line, ppos, MANDOCERR_BADPROLOG); + mandoc_vmsg(MANDOCERR_PROLOG_BAD, mdoc->parse, + line, ppos, "%s", mdoc_macronames[tok]); if (NULL == mdoc->meta.msec) mdoc->meta.msec = mandoc_strdup("1"); if (NULL == mdoc->meta.title) @@ -514,6 +516,8 @@ mdoc_block_alloc(struct mdoc *mdoc, int line, int pos, /* FALLTHROUGH */ case MDOC_Bl: /* FALLTHROUGH */ + case MDOC_En: + /* FALLTHROUGH */ case MDOC_Rs: p->norm = mandoc_calloc(1, sizeof(union mdoc_data)); break; @@ -865,7 +869,7 @@ mdoc_pmacro(struct mdoc *mdoc, int ln, char *buf, int mac[i] = '\0'; - tok = (i > 1 || i < 4) ? mdoc_hash_find(mac) : MDOC_MAX; + tok = (i > 1 && i < 4) ? mdoc_hash_find(mac) : MDOC_MAX; if (MDOC_MAX == tok) { mandoc_vmsg(MANDOCERR_MACRO, mdoc->parse,