]> git.cworth.org Git - glenv/blobdiff - glenv.c
Make the three --extensions* options mutually exclusive.
[glenv] / glenv.c
diff --git a/glenv.c b/glenv.c
index 6d27ad4bf402b6d380d619bb9730b50443714c76..76f669334eba354d270fafd752576fcee0704587 100644 (file)
--- 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: