aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_validate.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-02-04 19:20:12 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-02-04 19:20:12 +0000
commit4d53b36358108c3838a8424f0958934d3dcf1af9 (patch)
treee5b52dd2cc0204c63851a771630181bab63ca861 /mdoc_validate.c
parent664bdbb262c8b1093b2f9130a543c7458a41f295 (diff)
downloadmandoc-4d53b36358108c3838a8424f0958934d3dcf1af9.tar.gz
mandoc-4d53b36358108c3838a8424f0958934d3dcf1af9.tar.zst
mandoc-4d53b36358108c3838a8424f0958934d3dcf1af9.zip
improve diagnostics regarding arguments of .An .Pp .Lp .br .sp
in particular, get rid of check_count(..., CHECK_EQ, 0)
Diffstat (limited to 'mdoc_validate.c')
-rw-r--r--mdoc_validate.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/mdoc_validate.c b/mdoc_validate.c
index 417e2161..ebd78482 100644
--- a/mdoc_validate.c
+++ b/mdoc_validate.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_validate.c,v 1.268 2015/02/04 18:03:47 schwarze Exp $ */
+/* $Id: mdoc_validate.c,v 1.269 2015/02/04 19:20:12 schwarze Exp $ */
/*
* Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -1174,14 +1174,15 @@ post_at(POST_ARGS)
static void
post_an(POST_ARGS)
{
- struct mdoc_node *np;
+ struct mdoc_node *np, *nch;
np = mdoc->last;
if (AUTH__NONE == np->norm->An.auth) {
if (0 == np->child)
check_count(mdoc, MDOC_ELEM, CHECK_GT, 0);
- } else if (np->child)
- check_count(mdoc, MDOC_ELEM, CHECK_EQ, 0);
+ } else if ((nch = np->child) != NULL)
+ mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse,
+ nch->line, nch->pos, "An ... %s", nch->string);
}
static void
@@ -2134,14 +2135,17 @@ post_par(POST_ARGS)
{
struct mdoc_node *np;
- if (mdoc->last->tok == MDOC_sp)
- check_count(mdoc, MDOC_ELEM, CHECK_LT, 2);
- else
- check_count(mdoc, MDOC_ELEM, CHECK_EQ, 0);
+ np = mdoc->last;
- if (MDOC_ELEM != mdoc->last->type &&
- MDOC_BLOCK != mdoc->last->type)
- return;
+ if (np->tok == MDOC_sp) {
+ if (np->nchild > 1)
+ mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse,
+ np->child->next->line, np->child->next->pos,
+ "sp ... %s", np->child->next->string);
+ } else if (np->child != NULL)
+ mandoc_vmsg(MANDOCERR_ARG_SKIP,
+ mdoc->parse, np->line, np->pos, "%s %s",
+ mdoc_macronames[np->tok], np->child->string);
if (NULL == (np = mdoc->last->prev)) {
np = mdoc->last->parent;