source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* 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).