]> 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 824b8b8bfaf697a3131added5ca149c2a1fbbaf3..76f669334eba354d270fafd752576fcee0704587 100644 (file)
--- a/glenv.c
+++ b/glenv.c
@@ -41,10 +41,9 @@ typedef struct options {
 static void
 export_options (options_t *options)
 {
-       if (options->query)
-               setenv ("GLENV_QUERY", "1", 1);
-       else
-               unsetenv ("GLENV_QUERY");
+       if (options->query) {
+               glaze_set_first_gl_call_callback ("glenv_query");
+       }
 
        if (options->vendor)
                setenv ("GLENV_GL_VENDOR", options->vendor, 1);
@@ -115,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[])
 {
@@ -173,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: