source@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: schwarze@mdocml.bsd.lv
To: source@mdocml.bsd.lv
Subject: mdocml: no need to delete any content from .Rs blocks, and downgrade the
Date: Mon, 7 Jul 2014 12:12:21 -0400 (EDT)	[thread overview]
Message-ID: <201407071612.s67GCL67025528@krisdoz.my.domain> (raw)

Log Message:
-----------
no need to delete any content from .Rs blocks,
and downgrade the related message from ERROR to WARNING

Modified Files:
--------------
    mdocml:
        mandoc.h
        mdoc_validate.c
        read.c

Revision Data
-------------
Index: mdoc_validate.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_validate.c,v
retrieving revision 1.229
retrieving revision 1.230
diff -Lmdoc_validate.c -Lmdoc_validate.c -u -p -r1.229 -r1.230
--- mdoc_validate.c
+++ mdoc_validate.c
@@ -1768,42 +1768,9 @@ post_rs(POST_ARGS)
 	}
 
 	/*
-	 * Make sure only certain types of nodes are allowed within the
-	 * the `Rs' body.  Delete offending nodes and raise a warning.
-	 * Do this before re-ordering for the sake of clarity.
-	 */
-
-	next = NULL;
-	for (nn = mdoc->last->child; nn; nn = next) {
-		for (i = 0; i < RSORD_MAX; i++)
-			if (nn->tok == rsord[i])
-				break;
-
-		if (i < RSORD_MAX) {
-			if (MDOC__J == rsord[i] || MDOC__B == rsord[i])
-				mdoc->last->norm->Rs.quote_T++;
-			next = nn->next;
-			continue;
-		}
-
-		next = nn->next;
-		mandoc_msg(MANDOCERR_RS_SKIP, mdoc->parse,
-		    nn->line, nn->pos, mdoc_macronames[nn->tok]);
-		mdoc_node_delete(mdoc, nn);
-	}
-
-	/*
-	 * Nothing to sort if only invalid nodes were found
-	 * inside the `Rs' body.
-	 */
-
-	if (NULL == mdoc->last->child)
-		return(1);
-
-	/*
 	 * The full `Rs' block needs special handling to order the
 	 * sub-elements according to `rsord'.  Pick through each element
-	 * and correctly order it.  This is a insertion sort.
+	 * and correctly order it.  This is an insertion sort.
 	 */
 
 	next = NULL;
@@ -1813,6 +1780,14 @@ post_rs(POST_ARGS)
 			if (rsord[i] == nn->tok)
 				break;
 
+		if (i == RSORD_MAX) {
+			mandoc_msg(MANDOCERR_RS_BAD,
+			    mdoc->parse, nn->line, nn->pos,
+			    mdoc_macronames[nn->tok]);
+			i = -1;
+		} else if (MDOC__J == nn->tok || MDOC__B == nn->tok)
+			mdoc->last->norm->Rs.quote_T++;
+
 		/*
 		 * Remove `nn' from the chain.  This somewhat
 		 * repeats mdoc_node_unlink(), but since we're
@@ -1838,6 +1813,8 @@ post_rs(POST_ARGS)
 			for (j = 0; j < RSORD_MAX; j++)
 				if (rsord[j] == prev->tok)
 					break;
+			if (j == RSORD_MAX)
+				j = -1;
 
 			if (j <= i)
 				break;
Index: mandoc.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mandoc.h,v
retrieving revision 1.139
retrieving revision 1.140
diff -Lmandoc.h -Lmandoc.h -u -p -r1.139 -r1.140
--- mandoc.h
+++ mandoc.h
@@ -105,6 +105,7 @@ enum	mandocerr {
 	MANDOCERR_BD_REP, /* skipping duplicate display type: type */
 	MANDOCERR_BL_REP, /* skipping duplicate list type: type */
 	MANDOCERR_AT_BAD, /* unknown AT&T UNIX version: version */
+	MANDOCERR_RS_BAD, /* invalid content in Rs block: macro */
 	MANDOCERR_SM_BAD, /* invalid Boolean argument: macro arg */
 	MANDOCERR_FT_BAD, /* unknown font, skipping request: request font */
 
@@ -141,7 +142,6 @@ enum	mandocerr {
 	MANDOCERR_NONAME, /* manual name not yet set */
 	MANDOCERR_MACRO, /* skipping unknown macro */
 	MANDOCERR_ARGCOUNT, /* argument count wrong */
-	MANDOCERR_RS_SKIP, /* skipping invalid content in .Rs block: macro */
 	MANDOCERR_ST_BAD, /* unknown standard specifier: standard */
 	MANDOCERR_STRAYTA, /* skipping column outside column list */
 	MANDOCERR_NOSCOPE, /* skipping end of block that is not open */
Index: read.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/read.c,v
retrieving revision 1.66
retrieving revision 1.67
diff -Lread.c -Lread.c -u -p -r1.66 -r1.67
--- read.c
+++ read.c
@@ -149,6 +149,7 @@ static	const char * const	mandocerrs[MAN
 	"skipping duplicate display type",
 	"skipping duplicate list type",
 	"unknown AT&T UNIX version",
+	"invalid content in Rs block",
 	"invalid Boolean argument",
 	"unknown font, skipping request",
 
@@ -185,7 +186,6 @@ static	const char * const	mandocerrs[MAN
 	"manual name not yet set",
 	"skipping unknown macro",
 	"argument count wrong",
-	"skipping invalid content in .Rs block",
 	"unknown standard specifier",
 	"skipping column outside column list",
 	"skipping end of block that is not open",
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

                 reply	other threads:[~2014-07-07 16:12 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=201407071612.s67GCL67025528@krisdoz.my.domain \
    --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).