Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Mac OS X 10.9 no longer uses the -psn_XXX command line arg for Finder…
- Loading branch information
Showing
with
32 additions
and
2 deletions.
-
+32
−2
src/main/macosx/SDLMain.m
|
@@ -351,12 +351,42 @@ - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString |
|
|
#endif |
|
|
|
|
|
|
|
|
static int IsRootCwd() |
|
|
{ |
|
|
char buf[MAXPATHLEN]; |
|
|
char *cwd = getcwd(buf, sizeof (buf)); |
|
|
return (cwd && (strcmp(cwd, "/") == 0)); |
|
|
} |
|
|
|
|
|
static int IsTenPointNineOrLater() |
|
|
{ |
|
|
/* Gestalt() is deprecated in 10.8, but I don't care. Stop using SDL 1.2. */ |
|
|
SInt32 major, minor; |
|
|
Gestalt(gestaltSystemVersionMajor, &major); |
|
|
Gestalt(gestaltSystemVersionMinor, &minor); |
|
|
return ( ((major << 16) | minor) >= ((10 << 16) | 9) ); |
|
|
} |
|
|
|
|
|
static int IsFinderLaunch(const int argc, char **argv) |
|
|
{ |
|
|
const int bIsNewerOS = IsTenPointNineOrLater(); |
|
|
/* -psn_XXX is passed if we are launched from Finder in 10.8 and earlier */ |
|
|
if ( (!bIsNewerOS) && (argc >= 2) && (strncmp(argv[1], "-psn", 4) == 0) ) { |
|
|
return 1; |
|
|
} else if ((bIsNewerOS) && (argc == 1) && IsRootCwd()) { |
|
|
/* we might still be launched from the Finder; on 10.9+, you might not |
|
|
get the -psn command line anymore. Check version, if there's no |
|
|
command line, and if our current working directory is "/". */ |
|
|
return 1; |
|
|
} |
|
|
return 0; /* not a Finder launch. */ |
|
|
} |
|
|
|
|
|
/* Main entry point to executable - should *not* be SDL_main! */ |
|
|
int main (int argc, char **argv) |
|
|
{ |
|
|
/* Copy the arguments into a global variable */ |
|
|
/* This is passed if we are launched by double-clicking */ |
|
|
if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { |
|
|
if (IsFinderLaunch(argc, argv)) { |
|
|
gArgv = (char **) SDL_malloc(sizeof (char *) * 2); |
|
|
gArgv[0] = argv[0]; |
|
|
gArgv[1] = NULL; |
|
|