]> git.cworth.org Git - glenv/blobdiff - glenv.c
Share common code for numeric glGet functions
[glenv] / glenv.c
diff --git a/glenv.c b/glenv.c
index 824b8b8bfaf697a3131added5ca149c2a1fbbaf3..d5ec2e8735457a7bc80a6fcd7671f875cd23886b 100644 (file)
--- a/glenv.c
+++ b/glenv.c
@@ -45,7 +45,7 @@ export_options (options_t *options)
                setenv ("GLENV_QUERY", "1", 1);
        else
                unsetenv ("GLENV_QUERY");
-
+               
        if (options->vendor)
                setenv ("GLENV_GL_VENDOR", options->vendor, 1);
        else
@@ -68,19 +68,19 @@ export_options (options_t *options)
                unsetenv ("GLENV_GL_SHADING_LANGUAGE_VERSION");
 
        if (options->extensions)
-               setenv ("GLENV_EXTENSIONS", options->extensions, 1);
+               setenv ("GLENV_GL_EXTENSIONS", options->extensions, 1);
        else
-               unsetenv ("GLENV_EXTENSIONS");
+               unsetenv ("GLENV_GL_EXTENSIONS");
 
        if (options->extensions_whitelist)
-               setenv ("GLENV_EXTENSIONS_WHITELIST", options->extensions_whitelist, 1);
+               setenv ("GLENV_GL_EXTENSIONS_WHITELIST", options->extensions_whitelist, 1);
        else
-               unsetenv ("GLENV_EXTENSIONS_WHITELIST");
+               unsetenv ("GLENV_GL_EXTENSIONS_WHITELIST");
 
        if (options->extensions_blacklist)
-               setenv ("GLENV_EXTENSIONS_BLACKLIST", options->extensions_blacklist, 1);
+               setenv ("GLENV_GL_EXTENSIONS_BLACKLIST", options->extensions_blacklist, 1);
        else
-               unsetenv ("GLENV_EXTENSIONS_BLACKLIST");
+               unsetenv ("GLENV_GL_EXTENSIONS_BLACKLIST");
 }
 
 static void
@@ -115,6 +115,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 +181,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:
@@ -196,6 +216,8 @@ main (int argc, char *argv[])
 
        export_options (&options);
 
+       glaze_set_first_gl_call_callback ("glenv_first_gl_call");
+
        glaze_execute (argc - optind, &argv[optind], "libglenv.so");
 
        /* If glaze_execute returns then something went wrong. */