diff options
author | 2015-02-06 08:28:35 +0000 | |
---|---|---|
committer | 2015-02-06 08:28:35 +0000 | |
commit | d8b17016dd40c058e6cbfc2f195d4a2ac296d65e (patch) | |
tree | 6cedd7c230bf41c721154acd804b911a04cf13d9 | |
parent | 7fefe85053961b17df364545120a269be409beb4 (diff) | |
download | mandoc-d8b17016dd40c058e6cbfc2f195d4a2ac296d65e.tar.gz mandoc-d8b17016dd40c058e6cbfc2f195d4a2ac296d65e.tar.zst mandoc-d8b17016dd40c058e6cbfc2f195d4a2ac296d65e.zip |
better error reporting for .br .fi .nf with arguments
-rw-r--r-- | man_macro.c | 9 | ||||
-rw-r--r-- | man_validate.c | 12 | ||||
-rw-r--r-- | mandoc.1 | 7 |
3 files changed, 15 insertions, 13 deletions
diff --git a/man_macro.c b/man_macro.c index ed79321f..06a1d05d 100644 --- a/man_macro.c +++ b/man_macro.c @@ -1,4 +1,4 @@ -/* $Id: man_macro.c,v 1.95 2015/01/24 10:08:53 schwarze Exp $ */ +/* $Id: man_macro.c,v 1.96 2015/02/06 08:28:35 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2012, 2013, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org> @@ -420,6 +420,13 @@ in_line_eoln(MACRO_PROT_ARGS) n = man->last; for (;;) { + if (buf[*pos] != '\0' && (tok == MAN_br || + tok == MAN_fi || tok == MAN_nf)) { + mandoc_vmsg(MANDOCERR_ARG_SKIP, + man->parse, line, *pos, "%s %s", + man_macronames[tok], buf + *pos); + break; + } la = *pos; if ( ! man_args(man, line, pos, buf, &p)) break; diff --git a/man_validate.c b/man_validate.c index 2e844d19..682213b7 100644 --- a/man_validate.c +++ b/man_validate.c @@ -38,7 +38,6 @@ typedef void (*v_check)(CHKARGS); -static void check_eq0(CHKARGS); static void check_eq2(CHKARGS); static void check_le1(CHKARGS); static void check_le5(CHKARGS); @@ -182,7 +181,6 @@ check_##name(CHKARGS) \ #ineq, (x), n->nchild); \ } -INEQ_DEFINE(0, ==, eq0) INEQ_DEFINE(2, ==, eq2) INEQ_DEFINE(1, <=, le1) INEQ_DEFINE(5, <=, le5) @@ -401,9 +399,7 @@ static void post_nf(CHKARGS) { - check_eq0(man, n); - - if (MAN_LITERAL & man->flags) + if (man->flags & MAN_LITERAL) mandoc_msg(MANDOCERR_NF_SKIP, man->parse, n->line, n->pos, "nf"); @@ -414,8 +410,6 @@ static void post_fi(CHKARGS) { - check_eq0(man, n); - if ( ! (MAN_LITERAL & man->flags)) mandoc_msg(MANDOCERR_FI_SKIP, man->parse, n->line, n->pos, "fi"); @@ -501,9 +495,7 @@ static void post_vs(CHKARGS) { - if (n->tok == MAN_br) - check_eq0(man, n); - else + if (n->tok == MAN_sp) check_le1(man, n); if (NULL != n->prev) @@ -1,4 +1,4 @@ -.\" $Id: mandoc.1,v 1.147 2015/02/06 07:13:14 schwarze Exp $ +.\" $Id: mandoc.1,v 1.148 2015/02/06 08:28:35 schwarze Exp $ .\" .\" Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> .\" Copyright (c) 2012, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org> @@ -1635,7 +1635,10 @@ or .Ic \&EN macro, or a .Xr roff 7 -.Ic \&br +.Ic \&br , +.Ic \&fi , +or +.Ic \&nf request or .Sq \&.. block closing request is invoked with at least one argument. |