* mdocml: Start systematic improvements of error reporting.
@ 2014-06-20 17:24 schwarze
0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-06-20 17:24 UTC (permalink / raw)
To: source
Log Message:
-----------
Start systematic improvements of error reporting.
So far, this covers all WARNINGs related to the prologue.
1) hierarchical naming of MANDOCERR_* constants
2) mention the macro name in messages where that adds clarity
3) add one missing MANDOCERR_DATE_MISSING msg
4) fix the wording of one message related to the man(7) prologue
Started on the plane back from Ottawa.
Modified Files:
--------------
mdocml:
man_validate.c
mandoc.c
mandoc.h
mdoc.c
mdoc_validate.c
read.c
Revision Data
-------------
Index: mandoc.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mandoc.c,v
retrieving revision 1.79
retrieving revision 1.80
diff -Lmandoc.c -Lmandoc.c -u -p -r1.79 -r1.80
--- mandoc.c
+++ mandoc.c
@@ -509,14 +509,14 @@ mandoc_normdate(struct mparse *parse, ch
if (NULL == in || '\0' == *in ||
0 == strcmp(in, "$" "Mdocdate$")) {
- mandoc_msg(MANDOCERR_NODATE, parse, ln, pos, NULL);
+ mandoc_msg(MANDOCERR_DATE_MISSING, parse, ln, pos, NULL);
time(&t);
}
else if (a2time(&t, "%Y-%m-%d", in))
t = 0;
else if (!a2time(&t, "$" "Mdocdate: %b %d %Y $", in) &&
!a2time(&t, "%b %d, %Y", in)) {
- mandoc_msg(MANDOCERR_BADDATE, parse, ln, pos, NULL);
+ mandoc_msg(MANDOCERR_DATE_BAD, parse, ln, pos, NULL);
t = 0;
}
out = t ? time2a(t) : NULL;
Index: mdoc_validate.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_validate.c,v
retrieving revision 1.214
retrieving revision 1.215
diff -Lmdoc_validate.c -Lmdoc_validate.c -u -p -r1.214 -r1.215
--- mdoc_validate.c
+++ mdoc_validate.c
@@ -935,10 +935,10 @@ pre_dt(PRE_ARGS)
{
if (NULL == mdoc->meta.date || mdoc->meta.os)
- mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGOOO);
+ mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_ORDER);
if (mdoc->meta.title)
- mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGREP);
+ mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_REP);
return(1);
}
@@ -948,10 +948,10 @@ pre_os(PRE_ARGS)
{
if (NULL == mdoc->meta.title || NULL == mdoc->meta.date)
- mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGOOO);
+ mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_ORDER);
if (mdoc->meta.os)
- mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGREP);
+ mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_REP);
return(1);
}
@@ -961,10 +961,10 @@ pre_dd(PRE_ARGS)
{
if (mdoc->meta.title || mdoc->meta.os)
- mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGOOO);
+ mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_ORDER);
if (mdoc->meta.date)
- mdoc_nmsg(mdoc, n, MANDOCERR_PROLOGREP);
+ mdoc_nmsg(mdoc, n, MANDOCERR_PROLOG_REP);
return(1);
}
@@ -2184,7 +2184,7 @@ post_dt(POST_ARGS)
* FIXME: don't be lazy: have this make all
* characters be uppercase and just warn once.
*/
- mdoc_nmsg(mdoc, nn, MANDOCERR_UPPERCASE);
+ mdoc_nmsg(mdoc, nn, MANDOCERR_TITLE_CASE);
break;
}
@@ -2228,7 +2228,7 @@ post_dt(POST_ARGS)
mdoc->meta.vol = mandoc_strdup(cp);
mdoc->meta.msec = mandoc_strdup(nn->string);
} else {
- mdoc_nmsg(mdoc, n, MANDOCERR_BADMSEC);
+ mdoc_nmsg(mdoc, n, MANDOCERR_MSEC_BAD);
mdoc->meta.vol = mandoc_strdup(nn->string);
mdoc->meta.msec = mandoc_strdup(nn->string);
}
@@ -2250,7 +2250,7 @@ post_dt(POST_ARGS)
} else {
cp = mdoc_a2arch(nn->string);
if (NULL == cp) {
- mdoc_nmsg(mdoc, nn, MANDOCERR_BADVOLARCH);
+ mdoc_nmsg(mdoc, nn, MANDOCERR_ARCH_BAD);
free(mdoc->meta.vol);
mdoc->meta.vol = mandoc_strdup(nn->string);
} else
Index: mdoc.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc.c,v
retrieving revision 1.214
retrieving revision 1.215
diff -Lmdoc.c -Lmdoc.c -u -p -r1.214 -r1.215
--- mdoc.c
+++ mdoc.c
@@ -305,7 +305,8 @@ mdoc_macro(MACRO_PROT_ARGS)
if (MDOC_PROLOGUE & mdoc_macros[tok].flags &&
MDOC_PBODY & mdoc->flags) {
- mdoc_pmsg(mdoc, line, ppos, MANDOCERR_BADBODY);
+ mandoc_vmsg(MANDOCERR_PROLOG_ONLY, mdoc->parse,
+ line, ppos, "%s", mdoc_macronames[tok]);
return(1);
}
@@ -313,7 +314,8 @@ mdoc_macro(MACRO_PROT_ARGS)
if ( ! (MDOC_PROLOGUE & mdoc_macros[tok].flags) &&
! (MDOC_PBODY & mdoc->flags)) {
- mdoc_pmsg(mdoc, line, ppos, MANDOCERR_BADPROLOG);
+ mandoc_vmsg(MANDOCERR_PROLOG_BAD, mdoc->parse,
+ line, ppos, "%s", mdoc_macronames[tok]);
if (NULL == mdoc->meta.msec)
mdoc->meta.msec = mandoc_strdup("1");
if (NULL == mdoc->meta.title)
Index: mandoc.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mandoc.h,v
retrieving revision 1.120
retrieving revision 1.121
diff -Lmandoc.h -Lmandoc.h -u -p -r1.120 -r1.121
--- mandoc.h
+++ mandoc.h
@@ -49,16 +49,16 @@ enum mandocerr {
MANDOCERR_WARNING, /* ===== start of warnings ===== */
/* related to the prologue */
- MANDOCERR_NOTITLE, /* no title in document */
- MANDOCERR_UPPERCASE, /* document title should be all caps */
- MANDOCERR_BADMSEC, /* unknown manual section */
- MANDOCERR_BADVOLARCH, /* unknown manual volume or arch */
- MANDOCERR_NODATE, /* date missing, using today's date */
- MANDOCERR_BADDATE, /* cannot parse date, using it verbatim */
- MANDOCERR_PROLOGOOO, /* prologue macros out of order */
- MANDOCERR_PROLOGREP, /* duplicate prologue macro */
- MANDOCERR_BADPROLOG, /* macro not allowed in prologue */
- MANDOCERR_BADBODY, /* macro not allowed in body */
+ MANDOCERR_TH_MISSING, /* no TH macro in document */
+ MANDOCERR_TITLE_CASE, /* document title should be all caps */
+ MANDOCERR_MSEC_BAD, /* unknown manual section */
+ MANDOCERR_ARCH_BAD, /* unknown manual volume or arch */
+ MANDOCERR_DATE_MISSING, /* date missing, using today's date */
+ MANDOCERR_DATE_BAD, /* cannot parse date, using it verbatim */
+ MANDOCERR_PROLOG_ORDER, /* prologue macros out of order */
+ MANDOCERR_PROLOG_REP, /* duplicate prologue macro */
+ MANDOCERR_PROLOG_BAD, /* macro not allowed in prologue */
+ MANDOCERR_PROLOG_ONLY, /* macro not allowed in body */
/* related to document structure */
MANDOCERR_SO, /* .so is fragile, better use ln(1) */
Index: read.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/read.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -Lread.c -Lread.c -u -p -r1.48 -r1.49
--- read.c
+++ read.c
@@ -93,7 +93,7 @@ static const char * const mandocerrs[MAN
"generic warning",
/* related to the prologue */
- "no title in document",
+ "no TH macro in document",
"document title should be all caps",
"unknown manual section",
"unknown manual volume or arch",
Index: man_validate.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man_validate.c,v
retrieving revision 1.91
retrieving revision 1.92
diff -Lman_validate.c -Lman_validate.c -u -p -r1.91 -r1.92
--- man_validate.c
+++ man_validate.c
@@ -202,7 +202,7 @@ check_root(CHKARGS)
man_nmsg(man, n, MANDOCERR_NODOCBODY);
return(0);
} else if (NULL == man->meta.title) {
- man_nmsg(man, n, MANDOCERR_NOTITLE);
+ man_nmsg(man, n, MANDOCERR_TH_MISSING);
/*
* If a title hasn't been set, do so now (by
@@ -390,6 +390,7 @@ post_IP(CHKARGS)
static int
post_TH(CHKARGS)
{
+ struct man_node *nb;
const char *p;
free(man->meta.title);
@@ -401,6 +402,8 @@ post_TH(CHKARGS)
man->meta.title = man->meta.vol = man->meta.date =
man->meta.msec = man->meta.source = NULL;
+ nb = n;
+
/* ->TITLE<- MSEC DATE SOURCE VOL */
n = n->child;
@@ -409,7 +412,7 @@ post_TH(CHKARGS)
/* Only warn about this once... */
if (isalpha((unsigned char)*p) &&
! isupper((unsigned char)*p)) {
- man_nmsg(man, n, MANDOCERR_UPPERCASE);
+ man_nmsg(man, n, MANDOCERR_TITLE_CASE);
break;
}
}
@@ -435,8 +438,10 @@ post_TH(CHKARGS)
mandoc_strdup(n->string) :
mandoc_normdate(man->parse, n->string,
n->line, n->pos);
- } else
+ } else {
man->meta.date = mandoc_strdup("");
+ man_nmsg(man, n ? n : nb, MANDOCERR_DATE_MISSING);
+ }
/* TITLE MSEC DATE ->SOURCE<- VOL */
--
To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2014-06-20 17:24 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-20 17:24 mdocml: Start systematic improvements of error reporting schwarze
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).