diff options
author | Jeff Bland <jksb@linux.com> | 2013-03-03 04:07:25 -0700 |
---|---|---|
committer | Chad Versace <chad.versace@linux.intel.com> | 2013-03-06 13:51:28 -0800 |
commit | 33e2603dfa3699e725ccad52c5d490ea86505710 (patch) | |
tree | ebda12143b0d8cd01f0a840d1c608a93f7c592f4 /examples | |
parent | 97164cfa2cf564dfdd7bec755a1e093215e8d2e1 (diff) |
examples/gl_basic: Remove extra params added by Xcode
Diffstat (limited to 'examples')
-rw-r--r-- | examples/gl_basic.c | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/examples/gl_basic.c b/examples/gl_basic.c index 43dabf8..e8526d3 100644 --- a/examples/gl_basic.c +++ b/examples/gl_basic.c @@ -45,6 +45,9 @@ #ifdef __APPLE__ # import <Foundation/NSAutoreleasePool.h> # import <Appkit/NSApplication.h> + +static void +removeXcodeArgs(int *argc, char **argv); #endif #include "waffle.h" @@ -215,12 +218,10 @@ parse_args(int argc, char *argv[], struct options *opts) bool ok; #ifdef __APPLE__ - // Running from Xcode adds extra arguments like - // -ApplePersistenceIgnoreState and -NSDocumentRevisionsDebugMode. - if (argc < 3) -#else - if (argc < 3) + removeXcodeArgs(&argc, argv); #endif + + if (argc < 3) error_usage(); // Set some context attrs to invalid values. @@ -382,6 +383,30 @@ cocoa_finish(void) [pool drain]; } +static void +removeArg(int index, int *argc, char **argv) +{ + --*argc; + for (; index < *argc; ++index) + argv[index] = argv[index + 1]; +} + +static void +removeXcodeArgs(int *argc, char **argv) +{ + // Xcode sometimes adds additional arguments. + for (int i = 1; i < *argc; ) + { + if (strcmp(argv[i], "-NSDocumentRevisionsDebugMode") == 0 || + strcmp(argv[i], "-ApplePersistenceIgnoreState" ) == 0) + { + removeArg(i, argc, argv); + removeArg(i, argc, argv); + } else + ++i; + } +} + #endif // __APPLE__ int |