From: schwarze@mdocml.bsd.lv
To: source@mdocml.bsd.lv
Subject: mdocml: more specific .Nd diagnostics, allowing to get rid of enum
Date: Wed, 4 Feb 2015 11:39:26 -0500 (EST) [thread overview]
Message-ID: <2568297223550508867.enqueue@fantadrom.bsd.lv> (raw)
Log Message:
-----------
more specific .Nd diagnostics, allowing to get rid of enum check_lvl
and the respective argument of check_count()
Modified Files:
--------------
mdocml:
mandoc.1
mandoc.h
mdoc_validate.c
read.c
Revision Data
-------------
Index: mandoc.1
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mandoc.1,v
retrieving revision 1.141
retrieving revision 1.142
diff -Lmandoc.1 -Lmandoc.1 -u -p -r1.141 -r1.142
--- mandoc.1
+++ mandoc.1
@@ -784,6 +784,12 @@ This may confuse
.Xr makewhatis 8
and
.Xr apropos 1 .
+.It Sy "missing description line, using \(dq\(dq"
+.Pq mdoc
+The
+.Ic \&Nd
+macro lacks the required argument.
+The title line of the manual will end after the dash.
.It Sy "sections out of conventional order"
.Pq mdoc
A standard section occurs after another section it usually precedes.
Index: mdoc_validate.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mdoc_validate.c,v
retrieving revision 1.266
retrieving revision 1.267
diff -Lmdoc_validate.c -Lmdoc_validate.c -u -p -r1.266 -r1.267
--- mdoc_validate.c
+++ mdoc_validate.c
@@ -48,11 +48,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);
@@ -62,7 +57,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 *);
@@ -374,10 +369,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;
@@ -403,8 +397,7 @@ check_count(struct mdoc *mdoc, enum mdoc
/* 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);
}
@@ -412,25 +405,25 @@ check_count(struct mdoc *mdoc, enum mdoc
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
@@ -941,7 +934,7 @@ post_lb(POST_ARGS)
const char *stdlibname;
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);
@@ -995,7 +988,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);
@@ -1069,8 +1062,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);
}
@@ -1177,9 +1179,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
@@ -1661,12 +1663,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;
@@ -2072,7 +2074,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)
@@ -2135,9 +2137,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)
Index: mandoc.h
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mandoc.h,v
retrieving revision 1.194
retrieving revision 1.195
diff -Lmandoc.h -Lmandoc.h -u -p -r1.194 -r1.195
--- mandoc.h
+++ mandoc.h
@@ -66,6 +66,7 @@ enum mandocerr {
MANDOCERR_SEC_BEFORE, /* content before first section header: macro */
MANDOCERR_NAMESEC_FIRST, /* first section is not NAME: Sh title */
MANDOCERR_NAMESEC_BAD, /* bad NAME section contents: macro */
+ MANDOCERR_ND_EMPTY, /* missing description line, using "" */
MANDOCERR_SEC_ORDER, /* sections out of conventional order: Sh title */
MANDOCERR_SEC_REP, /* duplicate section title: Sh title */
MANDOCERR_SEC_MSEC, /* unexpected section: Sh title for ... only */
Index: read.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/read.c,v
retrieving revision 1.120
retrieving revision 1.121
diff -Lread.c -Lread.c -u -p -r1.120 -r1.121
--- read.c
+++ read.c
@@ -110,6 +110,7 @@ static const char * const mandocerrs[MAN
"content before first section header",
"first section is not \"NAME\"",
"bad NAME section contents",
+ "missing description line, using \"\"",
"sections out of conventional order",
"duplicate section title",
"unexpected section",
--
To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv
reply other threads:[~2015-02-04 16:39 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2568297223550508867.enqueue@fantadrom.bsd.lv \
--to=schwarze@mdocml.bsd.lv \
--cc=source@mdocml.bsd.lv \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).