src/filesystem/cocoa/SDL_sysfilesystem.m
changeset 7667 be1cc6f55840
child 7668 66da4242ce53
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/filesystem/cocoa/SDL_sysfilesystem.m	Tue Aug 20 19:57:11 2013 -0400
@@ -0,0 +1,93 @@
+/*
+  Simple DirectMedia Layer
+  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+*/
+#include "SDL_config.h"
+
+#ifdef SDL_FILESYSTEM_COCOA
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+/* System dependent filesystem routines                                */
+
+#include <Cocoa/Cocoa.h>
+#include <sys/stat.h>
+
+#include "SDL_error.h"
+#include "SDL_stdinc.h"
+#include "SDL_filesystem.h"
+
+char *
+SDL_GetBasePath(void)
+{
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+    const char *base = [[[NSBundle mainBundle] bundlePath] UTF8String];
+    char *retval = NULL;
+    if (base) {
+        const size_t len = SDL_strlen(base) + 2;
+        retval = (char *) SDL_malloc(len);
+        if (retval == NULL) {
+            SDL_OutOfMemory();
+        } else {
+            SDL_snprintf(retval, len, "%s/", base);
+        }
+    }
+
+    [pool release];
+    return retval;
+}
+
+char *
+SDL_GetPrefPath(const char *org, const char *app)
+{
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+    NSArray *array = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
+    char *retval = NULL;
+
+    (void) org;  // unused on Mac OS X and iOS.
+
+    if ([array count] > 0) {  // we only want the first item in the list.
+        NSString *str = [array objectAtIndex:0];
+        const char *base = [str UTF8String];
+        if (base) {
+            const size_t len = SDL_strlen(base) + SDL_strlen(app) + 3;
+            retval = (char *) SDL_malloc(len);
+            if (retval == NULL) {
+                SDL_OutOfMemory();
+            } else {
+                char *ptr;
+                SDL_snprintf(retval, len, "%s/%s/", base, app);
+                for (ptr = retval+1; *ptr; ptr++) {
+                    if (*ptr == '/') {
+                        *ptr = '\0';
+                        mkdir(retval, 0700);
+                        *ptr = '/';
+                    }
+                }
+                mkdir(retval, 0700);
+            }
+        }
+    }
+
+    [pool release];
+    return retval;
+}
+
+#endif /* SDL_FILESYSTEM_COCOA */
+
+/* vi: set ts=4 sw=4 expandtab: */