From 1a48ca666ffbdbbdf2b7d36f7cab0228b098da0f Mon Sep 17 00:00:00 2001 From: Charlie Birks Date: Thu, 4 Feb 2021 16:20:54 +0000 Subject: [PATCH] emscripten: Create directory recursively in GetPrefPath --- src/filesystem/emscripten/SDL_sysfilesystem.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/filesystem/emscripten/SDL_sysfilesystem.c b/src/filesystem/emscripten/SDL_sysfilesystem.c index dadfe947b..d2be76554 100644 --- a/src/filesystem/emscripten/SDL_sysfilesystem.c +++ b/src/filesystem/emscripten/SDL_sysfilesystem.c @@ -44,6 +44,7 @@ SDL_GetPrefPath(const char *org, const char *app) { const char *append = "/libsdl/"; char *retval; + char *ptr = NULL; size_t len = 0; if (!app) { @@ -67,7 +68,17 @@ SDL_GetPrefPath(const char *org, const char *app) SDL_snprintf(retval, len, "%s%s/", append, app); } + for (ptr = retval+1; *ptr; ptr++) { + if (*ptr == '/') { + *ptr = '\0'; + if (mkdir(retval, 0700) != 0 && errno != EEXIST) + goto error; + *ptr = '/'; + } + } + if (mkdir(retval, 0700) != 0 && errno != EEXIST) { +error: SDL_SetError("Couldn't create directory '%s': '%s'", retval, strerror(errno)); SDL_free(retval); return NULL;