source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* pod2mdoc: Invalid format codes were skipped including their contents.
@ 2014-07-15 19:00 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-07-15 19:00 UTC (permalink / raw)
  To: source

Log Message:
-----------
Invalid format codes were skipped including their contents.
Instead, just skip the code, but not the content.
Also improve the comments at the place in ordinary()
where formatcode() is called.

Modified Files:
--------------
    pod2mdoc:
        pod2mdoc.c

Revision Data
-------------
Index: pod2mdoc.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/pod2mdoc/pod2mdoc.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -Lpod2mdoc.c -Lpod2mdoc.c -u -p -r1.29 -r1.30
--- pod2mdoc.c
+++ pod2mdoc.c
@@ -397,19 +397,12 @@ formatcode(struct state *st, const char 
 
 	/* 
 	 * First, look up the format code. 
-	 * If it's not valid, then exit immediately.
+	 * If it's not valid, treat it as a NOOP.
 	 */
 	for (fmt = 0; fmt < FMT__MAX; fmt++) 
 		if (buf[*start] == fmts[fmt])
 			break;
 
-	if (FMT__MAX == fmt) {
-		putchar(last = buf[(*start)++]);
-		if ('\\' == last)
-			putchar('e');
-		return(0);
-	}
-
 	/*
 	 * Determine whether we're overriding our delimiter.
 	 * According to POD, if we have more than one '<' followed by a
@@ -472,7 +465,7 @@ formatcode(struct state *st, const char 
 	 * Check whether we're supposed to print macro stuff (this is
 	 * suppressed in, e.g., "Nm" and "Sh" macros).
 	 */
-	if ( ! nomacro) {
+	if (FMT__MAX != fmt && !nomacro) {
 		/*
 		 * Print out the macro describing this format code.
 		 * If we're not "reentrant" (not yet on a macro line)
@@ -599,6 +592,9 @@ formatcode(struct state *st, const char 
 				(*start)++;
 	}
 
+	if (FMT__MAX == fmt)
+		return(0);
+
 	if ( ! nomacro && FMT_CODE == fmt)
 		printf(" Qc ");
 
@@ -1095,18 +1091,12 @@ ordinary(struct state *st, const char *b
 		}
 
 		if (start < end - 1 && '<' == buf[start + 1]) {
-			/*
-			 * We've encountered a format code.
-			 * This is going to trigger a macro no matter
-			 * what, so print a newline now.
-			 * Then print the (possibly nested) macros and
-			 * following that, a newline.
-			 * Consume all whitespace so we don't
-			 * accidentally start an implicit literal line.
-			 * If the macro ends with a flush comma or
-			 * period, let mdoc(7) handle it for us.
-			 */
 			if (formatcode(st, buf, &start, end, 0, 0, seq)) {
+				/*
+				 * Let mdoc(7) handle trailing punctuation.
+				 * XXX Some punctuation characters
+				 *     are not handled yet.
+				 */
 				if ((start == end - 1 || 
 					(start < end - 1 && 
 					 (' ' == buf[start + 1] ||
@@ -1116,7 +1106,13 @@ ordinary(struct state *st, const char *b
 					putchar(' ');
 					putchar(buf[start++]);
 				}
+				/* End the macro line. */
 				putchar(last = '\n');
+				/*
+				 * Consume all whitespace
+				 * so we don't accidentally start
+				 * an implicit literal line.
+				 */
 				while (start < end && ' ' == buf[start])
 					start++;
 			}
--
 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-07-15 19:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-15 19:00 pod2mdoc: Invalid format codes were skipped including their contents 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).