diff options
author | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2015-02-04 16:38:32 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@cvs.openbsd.org> | 2015-02-04 16:38:32 +0000 |
commit | 203bd5d9c4f0078a07e5c626d95626aaeb40d522 (patch) | |
tree | d345ad4b15028cf0f4df3f169daa23833e5e95a2 /usr.bin/mandoc/mdoc_validate.c | |
parent | 274afcab6cb3e2d96930762c629c3dd152f7a4d3 (diff) |
more specific .Nd diagnostics, allowing to get rid of enum check_lvl
and the respective argument of check_count()
Diffstat (limited to 'usr.bin/mandoc/mdoc_validate.c')
-rw-r--r-- | usr.bin/mandoc/mdoc_validate.c | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/usr.bin/mandoc/mdoc_validate.c b/usr.bin/mandoc/mdoc_validate.c index 38c8e5fb0f5..772969ce183 100644 --- a/usr.bin/mandoc/mdoc_validate.c +++ b/usr.bin/mandoc/mdoc_validate.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mdoc_validate.c,v 1.182 2015/02/03 00:48:27 schwarze Exp $ */ +/* $OpenBSD: mdoc_validate.c,v 1.183 2015/02/04 16:38:31 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv> * Copyright (c) 2010-2015 Ingo Schwarze <schwarze@openbsd.org> @@ -46,11 +46,6 @@ enum check_ineq { CHECK_EQ }; -enum check_lvl { - CHECK_WARN, - CHECK_ERROR, -}; - typedef void (*v_pre)(PRE_ARGS); typedef void (*v_post)(POST_ARGS); @@ -60,7 +55,7 @@ struct valids { }; static void check_count(struct mdoc *, enum mdoc_type, - enum check_lvl, enum check_ineq, int); + enum check_ineq, int); static void check_text(struct mdoc *, int, int, char *); static void check_argv(struct mdoc *, struct mdoc_node *, struct mdoc_argv *); @@ -372,10 +367,9 @@ mdoc_valid_post(struct mdoc *mdoc) static void check_count(struct mdoc *mdoc, enum mdoc_type type, - enum check_lvl lvl, enum check_ineq ineq, int val) + enum check_ineq ineq, int val) { const char *p; - enum mandocerr t; if (mdoc->last->type != type) return; @@ -401,8 +395,7 @@ check_count(struct mdoc *mdoc, enum mdoc_type type, /* NOTREACHED */ } - t = lvl == CHECK_WARN ? MANDOCERR_ARGCWARN : MANDOCERR_ARGCOUNT; - mandoc_vmsg(t, mdoc->parse, mdoc->last->line, + mandoc_vmsg(MANDOCERR_ARGCWARN, mdoc->parse, mdoc->last->line, mdoc->last->pos, "want %s%d children (have %d)", p, val, mdoc->last->nchild); } @@ -410,25 +403,25 @@ check_count(struct mdoc *mdoc, enum mdoc_type type, static void bwarn_ge1(POST_ARGS) { - check_count(mdoc, MDOC_BODY, CHECK_WARN, CHECK_GT, 0); + check_count(mdoc, MDOC_BODY, CHECK_GT, 0); } static void ewarn_eq1(POST_ARGS) { - check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_EQ, 1); + check_count(mdoc, MDOC_ELEM, CHECK_EQ, 1); } static void ewarn_ge1(POST_ARGS) { - check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_GT, 0); + check_count(mdoc, MDOC_ELEM, CHECK_GT, 0); } static void hwarn_eq0(POST_ARGS) { - check_count(mdoc, MDOC_HEAD, CHECK_WARN, CHECK_EQ, 0); + check_count(mdoc, MDOC_HEAD, CHECK_EQ, 0); } static void @@ -938,7 +931,7 @@ post_lb(POST_ARGS) struct mdoc_node *n; char *libname; - check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_EQ, 1); + check_count(mdoc, MDOC_ELEM, CHECK_EQ, 1); n = mdoc->last->child; assert(MDOC_TEXT == n->type); mandoc_asprintf(&libname, "library \\(lq%s\\(rq", n->string); @@ -986,7 +979,7 @@ static void post_fo(POST_ARGS) { - check_count(mdoc, MDOC_HEAD, CHECK_WARN, CHECK_EQ, 1); + check_count(mdoc, MDOC_HEAD, CHECK_EQ, 1); bwarn_ge1(mdoc); if (mdoc->last->type == MDOC_HEAD && mdoc->last->nchild) post_fname(mdoc); @@ -1060,8 +1053,17 @@ post_nm(POST_ARGS) static void post_nd(POST_ARGS) { + struct mdoc_node *n; + + n = mdoc->last; + + if (n->type != MDOC_BODY) + return; + + if (n->child == NULL) + mandoc_msg(MANDOCERR_ND_EMPTY, mdoc->parse, + n->line, n->pos, "Nd"); - check_count(mdoc, MDOC_BODY, CHECK_ERROR, CHECK_GT, 0); post_hyph(mdoc); } @@ -1168,9 +1170,9 @@ post_an(POST_ARGS) np = mdoc->last; if (AUTH__NONE == np->norm->An.auth) { if (0 == np->child) - check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_GT, 0); + check_count(mdoc, MDOC_ELEM, CHECK_GT, 0); } else if (np->child) - check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_EQ, 0); + check_count(mdoc, MDOC_ELEM, CHECK_EQ, 0); } static void @@ -1652,12 +1654,12 @@ post_rs(POST_ARGS) switch (mdoc->last->type) { case MDOC_HEAD: - check_count(mdoc, MDOC_HEAD, CHECK_WARN, CHECK_EQ, 0); + check_count(mdoc, MDOC_HEAD, CHECK_EQ, 0); return; case MDOC_BODY: if (mdoc->last->child) break; - check_count(mdoc, MDOC_BODY, CHECK_WARN, CHECK_GT, 0); + check_count(mdoc, MDOC_BODY, CHECK_GT, 0); return; default: return; @@ -2063,7 +2065,7 @@ post_ignpar(POST_ARGS) { struct mdoc_node *np; - check_count(mdoc, MDOC_HEAD, CHECK_WARN, CHECK_GT, 0); + check_count(mdoc, MDOC_HEAD, CHECK_GT, 0); post_hyph(mdoc); if (MDOC_BODY != mdoc->last->type) @@ -2126,9 +2128,9 @@ post_par(POST_ARGS) struct mdoc_node *np; if (mdoc->last->tok == MDOC_sp) - check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_LT, 2); + check_count(mdoc, MDOC_ELEM, CHECK_LT, 2); else - check_count(mdoc, MDOC_ELEM, CHECK_WARN, CHECK_EQ, 0); + check_count(mdoc, MDOC_ELEM, CHECK_EQ, 0); if (MDOC_ELEM != mdoc->last->type && MDOC_BLOCK != mdoc->last->type) |