src/filesystem/cocoa/SDL_sysfilesystem.m
changeset 7667 be1cc6f55840
child 7668 66da4242ce53
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/filesystem/cocoa/SDL_sysfilesystem.m	Tue Aug 20 19:57:11 2013 -0400
     1.3 @@ -0,0 +1,93 @@
     1.4 +/*
     1.5 +  Simple DirectMedia Layer
     1.6 +  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
     1.7 +
     1.8 +  This software is provided 'as-is', without any express or implied
     1.9 +  warranty.  In no event will the authors be held liable for any damages
    1.10 +  arising from the use of this software.
    1.11 +
    1.12 +  Permission is granted to anyone to use this software for any purpose,
    1.13 +  including commercial applications, and to alter it and redistribute it
    1.14 +  freely, subject to the following restrictions:
    1.15 +
    1.16 +  1. The origin of this software must not be misrepresented; you must not
    1.17 +     claim that you wrote the original software. If you use this software
    1.18 +     in a product, an acknowledgment in the product documentation would be
    1.19 +     appreciated but is not required.
    1.20 +  2. Altered source versions must be plainly marked as such, and must not be
    1.21 +     misrepresented as being the original software.
    1.22 +  3. This notice may not be removed or altered from any source distribution.
    1.23 +*/
    1.24 +#include "SDL_config.h"
    1.25 +
    1.26 +#ifdef SDL_FILESYSTEM_COCOA
    1.27 +
    1.28 +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    1.29 +/* System dependent filesystem routines                                */
    1.30 +
    1.31 +#include <Cocoa/Cocoa.h>
    1.32 +#include <sys/stat.h>
    1.33 +
    1.34 +#include "SDL_error.h"
    1.35 +#include "SDL_stdinc.h"
    1.36 +#include "SDL_filesystem.h"
    1.37 +
    1.38 +char *
    1.39 +SDL_GetBasePath(void)
    1.40 +{
    1.41 +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    1.42 +    const char *base = [[[NSBundle mainBundle] bundlePath] UTF8String];
    1.43 +    char *retval = NULL;
    1.44 +    if (base) {
    1.45 +        const size_t len = SDL_strlen(base) + 2;
    1.46 +        retval = (char *) SDL_malloc(len);
    1.47 +        if (retval == NULL) {
    1.48 +            SDL_OutOfMemory();
    1.49 +        } else {
    1.50 +            SDL_snprintf(retval, len, "%s/", base);
    1.51 +        }
    1.52 +    }
    1.53 +
    1.54 +    [pool release];
    1.55 +    return retval;
    1.56 +}
    1.57 +
    1.58 +char *
    1.59 +SDL_GetPrefPath(const char *org, const char *app)
    1.60 +{
    1.61 +    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    1.62 +    NSArray *array = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
    1.63 +    char *retval = NULL;
    1.64 +
    1.65 +    (void) org;  // unused on Mac OS X and iOS.
    1.66 +
    1.67 +    if ([array count] > 0) {  // we only want the first item in the list.
    1.68 +        NSString *str = [array objectAtIndex:0];
    1.69 +        const char *base = [str UTF8String];
    1.70 +        if (base) {
    1.71 +            const size_t len = SDL_strlen(base) + SDL_strlen(app) + 3;
    1.72 +            retval = (char *) SDL_malloc(len);
    1.73 +            if (retval == NULL) {
    1.74 +                SDL_OutOfMemory();
    1.75 +            } else {
    1.76 +                char *ptr;
    1.77 +                SDL_snprintf(retval, len, "%s/%s/", base, app);
    1.78 +                for (ptr = retval+1; *ptr; ptr++) {
    1.79 +                    if (*ptr == '/') {
    1.80 +                        *ptr = '\0';
    1.81 +                        mkdir(retval, 0700);
    1.82 +                        *ptr = '/';
    1.83 +                    }
    1.84 +                }
    1.85 +                mkdir(retval, 0700);
    1.86 +            }
    1.87 +        }
    1.88 +    }
    1.89 +
    1.90 +    [pool release];
    1.91 +    return retval;
    1.92 +}
    1.93 +
    1.94 +#endif /* SDL_FILESYSTEM_COCOA */
    1.95 +
    1.96 +/* vi: set ts=4 sw=4 expandtab: */