summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJeff Bland <jksb@linux.com>2013-03-03 04:07:25 -0700
committerChad Versace <chad.versace@linux.intel.com>2013-03-06 13:51:28 -0800
commit33e2603dfa3699e725ccad52c5d490ea86505710 (patch)
treeebda12143b0d8cd01f0a840d1c608a93f7c592f4 /examples
parent97164cfa2cf564dfdd7bec755a1e093215e8d2e1 (diff)
examples/gl_basic: Remove extra params added by Xcode
Diffstat (limited to 'examples')
-rw-r--r--examples/gl_basic.c35
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