#include "SDL_internal.h"
#ifdef SDL_FILESYSTEM_PS2
#include "../SDL_sysfilesystem.h"
#include <sys/stat.h>
#include <unistd.h>
char *SDL_SYS_GetBasePath(void)
{
char *result = NULL;
size_t len;
char cwd[FILENAME_MAX];
getcwd(cwd, sizeof(cwd));
len = SDL_strlen(cwd) + 2;
result = (char *)SDL_malloc(len);
if (result) {
SDL_snprintf(result, len, "%s/", cwd);
}
return result;
}
static void recursive_mkdir(const char *dir)
{
char tmp[FILENAME_MAX];
const char *base = SDL_GetBasePath();
char *p = NULL;
size_t len;
SDL_snprintf(tmp, sizeof(tmp), "%s", dir);
len = SDL_strlen(tmp);
if (tmp[len - 1] == '/') {
tmp[len - 1] = 0;
}
for (p = tmp + 1; *p; p++) {
if (*p == '/') {
*p = 0;
if (base && SDL_strstr(tmp, base) != NULL) {
mkdir(tmp, S_IRWXU);
}
*p = '/';
}
}
mkdir(tmp, S_IRWXU);
}
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
{
char *result = NULL;
size_t len;
const char *base = SDL_GetBasePath();
if (!base) {
return NULL;
}
len = SDL_strlen(base) + SDL_strlen(org) + SDL_strlen(app) + 4;
result = (char *)SDL_malloc(len);
if (result) {
if (*org) {
SDL_snprintf(result, len, "%s%s/%s/", base, org, app);
} else {
SDL_snprintf(result, len, "%s%s/", base, app);
}
recursive_mkdir(result);
}
return result;
}
char *SDL_SYS_GetUserFolder(SDL_Folder folder)
{
SDL_Unsupported();
return NULL;
}
#endif