source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mandoc: Fix a regression caused by the insertion of two new tokens,
@ 2020-08-27 15:00 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2020-08-27 15:00 UTC (permalink / raw)
  To: source

Log Message:
-----------
Fix a regression caused by the insertion of two new tokens,
which unintentionally made the -O tag= argument mandatory,
breaking commands like "man -akO tag Ic=ulimit".
Noticed while answering questions from Ian Ropers.

Modified Files:
--------------
    mandoc:
        manpath.c

Revision Data
-------------
Index: manpath.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/manpath.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -Lmanpath.c -Lmanpath.c -u -p -r1.42 -r1.43
--- manpath.c
+++ manpath.c
@@ -223,8 +223,12 @@ int
 manconf_output(struct manoutput *conf, const char *cp, int fromfile)
 {
 	const char *const toks[] = {
+	    /* Tokens requiring an argument. */
 	    "includes", "man", "paper", "style", "indent", "width",
-	    "tag", "outfilename", "tagfilename",
+	    "outfilename", "tagfilename",
+	    /* Token taking an optional argument. */
+	    "tag",
+	    /* Tokens not taking arguments. */
 	    "fragment", "mdoc", "noval", "toc"
 	};
 	const size_t ntoks = sizeof(toks) / sizeof(toks[0]);
@@ -307,25 +311,29 @@ manconf_output(struct manoutput *conf, c
 		    "-O width=%s is %s", cp, errstr);
 		return -1;
 	case 6:
-		if (conf->tag != NULL) {
-			oldval = mandoc_strdup(conf->tag);
-			break;
-		}
-		conf->tag = mandoc_strdup(cp);
-		return 0;
-	case 7:
 		if (conf->outfilename != NULL) {
 			oldval = mandoc_strdup(conf->outfilename);
 			break;
 		}
 		conf->outfilename = mandoc_strdup(cp);
 		return 0;
-	case 8:
+	case 7:
 		if (conf->tagfilename != NULL) {
 			oldval = mandoc_strdup(conf->tagfilename);
 			break;
 		}
 		conf->tagfilename = mandoc_strdup(cp);
+		return 0;
+	/*
+	 * If the index of the following token changes,
+	 * do not forget to adjust the range check above the switch.
+	 */
+	case 8:
+		if (conf->tag != NULL) {
+			oldval = mandoc_strdup(conf->tag);
+			break;
+		}
+		conf->tag = mandoc_strdup(cp);
 		return 0;
 	case 9:
 		conf->fragment = 1;
--
 To unsubscribe send an email to source+unsubscribe@mandoc.bsd.lv


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-08-27 15:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-27 15:00 mandoc: Fix a regression caused by the insertion of two new tokens, 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).