source@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: schwarze@mandoc.bsd.lv
To: source@mandoc.bsd.lv
Subject: mandoc: Fix a regression caused by the insertion of two new tokens,
Date: Thu, 27 Aug 2020 10:00:17 -0500 (EST)	[thread overview]
Message-ID: <f200b30c63371023@mandoc.bsd.lv> (raw)

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


                 reply	other threads:[~2020-08-27 15:00 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=f200b30c63371023@mandoc.bsd.lv \
    --to=schwarze@mandoc.bsd.lv \
    --cc=source@mandoc.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).