=================================================================== RCS file: /cvs/mandoc/mdoc.c,v retrieving revision 1.62 retrieving revision 1.64 diff -u -p -r1.62 -r1.64 --- mandoc/mdoc.c 2009/03/12 02:57:36 1.62 +++ mandoc/mdoc.c 2009/03/12 16:30:50 1.64 @@ -1,4 +1,4 @@ -/* $Id: mdoc.c,v 1.62 2009/03/12 02:57:36 kristaps Exp $ */ +/* $Id: mdoc.c,v 1.64 2009/03/12 16:30:50 kristaps Exp $ */ /* * Copyright (c) 2008 Kristaps Dzonsons * @@ -73,7 +73,8 @@ const char *const __mdoc_macronames[MDOC_MAX] = { "Bk", "Ek", "Bt", "Hf", "Fr", "Ud", "Lb", "Ap", "Lp", "Lk", "Mt", "Brq", - "Bro", "Brc" + /* LINTED */ + "Bro", "Brc", "\%C" }; const char *const __mdoc_argnames[MDOC_ARG_MAX] = { @@ -85,7 +86,7 @@ const char *const __mdoc_argnames[MDOC_ARG_MAX] = { "ohang", "inset", "column", "width", "compact", "std", "filled", "words", "emphasis", - "symbolic" + "symbolic", "nested" }; const char * const *mdoc_macronames = __mdoc_macronames; @@ -257,7 +258,8 @@ mdoc_macro(struct mdoc *m, int tok, "disallowed in prologue")); if (1 != pp && ! (MDOC_CALLABLE & mdoc_macros[tok].flags)) - return(mdoc_perr(m, ln, pp, "not callable")); + return(mdoc_perr(m, ln, pp, "%s not callable", + mdoc_macronames[tok])); return((*mdoc_macros[tok].fp)(m, tok, ln, pp, pos, buf)); } @@ -520,7 +522,19 @@ parsemacro(struct mdoc *m, int ln, char *buf) int i, c; char mac[5]; - /* Comments are quickly ignored. */ + /* Comments and empties are quickly ignored. */ + + if (0 == buf[1]) + return(1); + + if (isspace((unsigned char)buf[1])) { + i = 2; + while (buf[i] && isspace((unsigned char)buf[i])) + i++; + if (0 == buf[i]) + return(1); + return(mdoc_perr(m, ln, 1, "invalid syntax")); + } if (buf[1] && '\\' == buf[1]) if (buf[2] && '\"' == buf[2])