| | |
| | | /* |
| | | Simple DirectMedia Layer |
| | | Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org> |
| | | Copyright (C) 1997-2018 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 |
| | |
| | | /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ |
| | | /* System dependent filesystem routines */ |
| | | |
| | | #include <os/kernel/image.h> |
| | | #include <os/storage/Directory.h> |
| | | #include <os/storage/Entry.h> |
| | | #include <os/storage/Path.h> |
| | | #include <kernel/image.h> |
| | | #include <storage/Directory.h> |
| | | #include <storage/Entry.h> |
| | | #include <storage/Path.h> |
| | | |
| | | #include "SDL_error.h" |
| | | #include "SDL_stdinc.h" |
| | |
| | | { |
| | | // !!! FIXME: is there a better way to do this? |
| | | const char *home = SDL_getenv("HOME"); |
| | | const char *append = "config/settings/"; |
| | | const size_t len = SDL_strlen(home) + SDL_strlen(append) + SDL_strlen(org) + SDL_strlen(app) + 3; |
| | | const char *append = "/config/settings/"; |
| | | size_t len = SDL_strlen(home); |
| | | |
| | | if (!app) { |
| | | SDL_InvalidParamError("app"); |
| | | return NULL; |
| | | } |
| | | if (!org) { |
| | | org = ""; |
| | | } |
| | | |
| | | if (!len || (home[len - 1] == '/')) { |
| | | ++append; // home empty or ends with separator, skip the one from append |
| | | } |
| | | len += SDL_strlen(append) + SDL_strlen(org) + SDL_strlen(app) + 3; |
| | | char *retval = (char *) SDL_malloc(len); |
| | | if (!retval) { |
| | | SDL_OutOfMemory(); |
| | | } else { |
| | | SDL_snprintf(retval, len, "%s%s%s/%s/", home, append, org, app); |
| | | if (*org) { |
| | | SDL_snprintf(retval, len, "%s%s%s/%s/", home, append, org, app); |
| | | } else { |
| | | SDL_snprintf(retval, len, "%s%s%s/", home, append, app); |
| | | } |
| | | create_directory(retval, 0700); // Haiku api: creates missing dirs |
| | | } |
| | | |