Skip to content

Commit

Permalink
reworked GetBasePath on OS X to use Contents/Resource by default if b…
Browse files Browse the repository at this point in the history
…undled, or exedir if not bundled.

- also adds OS X specific magic for bundled apps adding an Info.plist property of name SDL_FILESYSTEM_BASE_DIR_TYPE to the following values will change the bahaviour.
* bundle -- use the bundle directory e.g. "/Applications/MyGame/Blah.app/"
* parent -- use the bundle parent directory e.g. "/Applications/MyGame/"
* resource -- use the bundle resource directory (default) e.g. "/Applications/MyGame/Blah.app/Contents/Resources/"
  • Loading branch information
urkle committed Aug 25, 2013
1 parent 9ce449e commit 833fd30
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion src/filesystem/cocoa/SDL_sysfilesystem.m
Expand Up @@ -37,8 +37,21 @@
SDL_GetBasePath(void)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
const char *base = [[[NSBundle mainBundle] bundlePath] UTF8String];
NSBundle *bundle = [NSBundle mainBundle];
const char* baseType = [[[bundle infoDictionary] objectForKey:@"SDL_FILESYSTEM_BASE_DIR_TYPE"] UTF8String];
const char *base = NULL;
char *retval = NULL;
if (baseType == NULL) {
baseType = "resource";
}
if (SDL_strcasecmp(baseType, "bundle")==0) {
base = [[bundle bundlePath] UTF8String];
} else if (SDL_strcasecmp(baseType, "parent")==0) {
base = [[[bundle bundlePath] stringByDeletingLastPathComponent] UTF8String];
} else {
/* this returns the exedir for non-bundled and the resourceDir for bundled apps */
base = [[bundle resourcePath] UTF8String];
}
if (base) {
const size_t len = SDL_strlen(base) + 2;
retval = (char *) SDL_malloc(len);
Expand Down

0 comments on commit 833fd30

Please sign in to comment.