#include "SDL_internal.h"
#ifdef SDL_FILESYSTEM_N3DS
#include "../SDL_sysfilesystem.h"
#include <3ds.h>
#include <dirent.h>
#include <errno.h>
static char *MakePrefPath(const char *app);
static bool CreatePrefPathDir(const char *pref);
char *SDL_SYS_GetBasePath(void)
{
char *base_path = SDL_strdup("romfs:/");
return base_path;
}
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
{
char *pref_path = NULL;
pref_path = MakePrefPath(app);
if (!pref_path) {
return NULL;
}
if (!CreatePrefPathDir(pref_path)) {
SDL_free(pref_path);
return NULL;
}
return pref_path;
}
char *SDL_SYS_GetUserFolder(SDL_Folder folder)
{
SDL_Unsupported();
return NULL;
}
static char *MakePrefPath(const char *app)
{
char *pref_path;
if (SDL_asprintf(&pref_path, "sdmc:/3ds/%s/", app) < 0) {
return NULL;
}
return pref_path;
}
static bool CreatePrefPathDir(const char *pref)
{
int result = mkdir(pref, 0666);
if (result == -1 && errno != EEXIST) {
return SDL_SetError("Failed to create '%s' (%s)", pref, strerror(errno));
}
return true;
}
#endif