Commit 7d7c5b803cecdb87673b824103e4c1c0b3e29fac

Francisco Javier Trujillo Mata 2022-06-29T01:26:27

Improving mkdir creating parents folder

diff --git a/src/filesystem/ps2/SDL_sysfilesystem.c b/src/filesystem/ps2/SDL_sysfilesystem.c
index 191c962..21c24b6 100644
--- a/src/filesystem/ps2/SDL_sysfilesystem.c
+++ b/src/filesystem/ps2/SDL_sysfilesystem.c
@@ -47,6 +47,33 @@ SDL_GetBasePath(void)
   return retval;
 }
 
+/* Do a recursive mkdir of parents folders */
+static void recursive_mkdir(const char *dir) {
+  char tmp[FILENAME_MAX];
+  char *base = SDL_GetBasePath();
+  char *p = NULL;
+  size_t len;
+
+  snprintf(tmp, sizeof(tmp),"%s",dir);
+  len = strlen(tmp);
+  if (tmp[len - 1] == '/')
+      tmp[len - 1] = 0;
+
+  for (p = tmp + 1; *p; p++) {
+    if (*p == '/') {
+      *p = 0;
+      // Just creating subfolders from current path
+      if (strstr(tmp, base) != NULL)
+        mkdir(tmp, S_IRWXU);
+
+      *p = '/';
+    }
+  }
+
+  free(base);
+  mkdir(tmp, S_IRWXU);
+}
+
 char *
 SDL_GetPrefPath(const char *org, const char *app)
 {
@@ -71,7 +98,7 @@ SDL_GetPrefPath(const char *org, const char *app)
   }
   free(base);
 
-  mkdir(retval, 0x0755);
+  recursive_mkdir(retval);
   
   return retval;
 }