src/filesystem/emscripten/SDL_sysfilesystem.c
author Philipp Wiesemann
Wed, 15 Apr 2015 21:25:15 +0200
changeset 9559 3ca4f4ef7506
parent 9278 8900afb78a19
child 9619 b94b6d0bff0f
permissions -rw-r--r--
Emscripten: Fixed memory leak if SDL_GetPrefPath() failed.
icculus@9278
     1
/*
icculus@9278
     2
  Simple DirectMedia Layer
icculus@9278
     3
  Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
icculus@9278
     4
icculus@9278
     5
  This software is provided 'as-is', without any express or implied
icculus@9278
     6
  warranty.  In no event will the authors be held liable for any damages
icculus@9278
     7
  arising from the use of this software.
icculus@9278
     8
icculus@9278
     9
  Permission is granted to anyone to use this software for any purpose,
icculus@9278
    10
  including commercial applications, and to alter it and redistribute it
icculus@9278
    11
  freely, subject to the following restrictions:
icculus@9278
    12
icculus@9278
    13
  1. The origin of this software must not be misrepresented; you must not
icculus@9278
    14
     claim that you wrote the original software. If you use this software
icculus@9278
    15
     in a product, an acknowledgment in the product documentation would be
icculus@9278
    16
     appreciated but is not required.
icculus@9278
    17
  2. Altered source versions must be plainly marked as such, and must not be
icculus@9278
    18
     misrepresented as being the original software.
icculus@9278
    19
  3. This notice may not be removed or altered from any source distribution.
icculus@9278
    20
*/
icculus@9278
    21
#include "../../SDL_internal.h"
icculus@9278
    22
icculus@9278
    23
#ifdef SDL_FILESYSTEM_EMSCRIPTEN
icculus@9278
    24
icculus@9278
    25
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
icculus@9278
    26
/* System dependent filesystem routines                                */
icculus@9278
    27
#include <errno.h>
icculus@9278
    28
#include <sys/stat.h>
icculus@9278
    29
icculus@9278
    30
#include "SDL_error.h"
icculus@9278
    31
#include "SDL_filesystem.h"
icculus@9278
    32
icculus@9278
    33
#include <emscripten/emscripten.h>
icculus@9278
    34
icculus@9278
    35
char *
icculus@9278
    36
SDL_GetBasePath(void)
icculus@9278
    37
{
icculus@9278
    38
    char *retval = "/";
icculus@9278
    39
    return SDL_strdup(retval);
icculus@9278
    40
}
icculus@9278
    41
icculus@9278
    42
char *
icculus@9278
    43
SDL_GetPrefPath(const char *org, const char *app)
icculus@9278
    44
{
icculus@9278
    45
    const char *append = "/libsdl/";
icculus@9278
    46
    char *retval;
icculus@9278
    47
    size_t len = 0;
icculus@9278
    48
icculus@9278
    49
    len = SDL_strlen(append) + SDL_strlen(org) + SDL_strlen(app) + 3;
icculus@9278
    50
    retval = (char *) SDL_malloc(len);
icculus@9278
    51
    if (!retval) {
icculus@9278
    52
        SDL_OutOfMemory();
icculus@9278
    53
        return NULL;
icculus@9278
    54
    }
icculus@9278
    55
icculus@9278
    56
    SDL_snprintf(retval, len, "%s%s/%s/", append, org, app);
icculus@9278
    57
icculus@9278
    58
    if (mkdir(retval, 0700) != 0 && errno != EEXIST) {
icculus@9278
    59
        SDL_SetError("Couldn't create directory '%s': '%s'", retval, strerror(errno));
philipp@9559
    60
        SDL_free(retval);
icculus@9278
    61
        return NULL;
icculus@9278
    62
    }
icculus@9278
    63
icculus@9278
    64
    return retval;
icculus@9278
    65
}
icculus@9278
    66
icculus@9278
    67
#endif /* SDL_FILESYSTEM_EMSCRIPTEN */
icculus@9278
    68
icculus@9278
    69
/* vi: set ts=4 sw=4 expandtab: */