SDL: Merge commit '7d7c5b803cecdb87673b824103e4c1c0b3e29fac' into main

https://github.com/libsdl-org/SDL/commit/e09233cd2e0cc6c3f8d2e9decc9eb899dfa163ad

From 7d7c5b803cecdb87673b824103e4c1c0b3e29fac Mon Sep 17 00:00:00 2001
From: Francisco Javier Trujillo Mata <[EMAIL REDACTED]>
Date: Wed, 29 Jun 2022 01:26:27 +0200
Subject: [PATCH] Improving mkdir creating parents folder

---
 src/filesystem/ps2/SDL_sysfilesystem.c | 29 +++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/filesystem/ps2/SDL_sysfilesystem.c b/src/filesystem/ps2/SDL_sysfilesystem.c
index 191c9623753..21c24b61b0c 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;
 }