]> git.cworth.org Git - glenv/commitdiff
Make the three --extensions* options mutually exclusive.
authorCarl Worth <cworth@cworth.org>
Thu, 5 Sep 2013 00:05:42 +0000 (17:05 -0700)
committerCarl Worth <cworth@cworth.org>
Thu, 5 Sep 2013 00:05:42 +0000 (17:05 -0700)
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.

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
 };
 
        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[])
 {
 int
 main (int argc, char *argv[])
 {
@@ -172,12 +180,24 @@ main (int argc, char *argv[])
                        options.shading_language_version = optarg;
                        break;
                case EXTENSIONS_OPT:
                        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:
                        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:
                        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:
                        options.extensions_blacklist = optarg;
                        break;
                default: