From: Carl Worth <cworth@cworth.org>
Date: Thu, 5 Sep 2013 00:05:42 +0000 (-0700)
Subject: Make the three --extensions* options mutually exclusive.
X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=25190a5158256abe6be58bdb2065ed7f6a403fa5;p=glenv

Make the three --extensions* options mutually exclusive.

It's not obvious that the user has thought out what is actually desired
if more than one of these options is specified. So we simply forbid that.
---

diff --git a/glenv.c b/glenv.c
index 6d27ad4..76f6693 100644
--- a/glenv.c
+++ b/glenv.c
@@ -114,6 +114,14 @@ enum {
 	EXTENSIONS_BLACKLIST_OPT
 };
 
+static void
+invalid_combination (const char *second, const char *first)
+{
+	fprintf (stderr, "Error: Option %s cannot be specified after %s\n",
+		 second, first);
+	exit (1);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -172,12 +180,24 @@ main (int argc, char *argv[])
 			options.shading_language_version = optarg;
 			break;
 		case EXTENSIONS_OPT:
+			if (options.extensions_whitelist)
+				invalid_combination ("--extensions", "--extensions-whitelist");
+			if (options.extensions_blacklist)
+				invalid_combination ("--extensions", "--extensions-blacklist");
 			options.extensions = optarg;
 			break;
 		case EXTENSIONS_WHITELIST_OPT:
+			if (options.extensions)
+				invalid_combination ("--extensions-whitelist", "--extensions");
+			if (options.extensions_blacklist)
+				invalid_combination ("--extensions-whitelist", "--extensions-blacklist");
 			options.extensions_whitelist = optarg;
 			break;
 		case EXTENSIONS_BLACKLIST_OPT:
+			if (options.extensions)
+				invalid_combination ("--extensions-blacklist", "--extensions");
+			if (options.extensions_whitelist)
+				invalid_combination ("--extensions-blacklist", "--extensions-whitelist");
 			options.extensions_blacklist = optarg;
 			break;
 		default: