mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-30 23:18:29 +00:00
Add trailing path separator to SDL_GetUserFolder()
This commit is contained in:
@@ -209,11 +209,17 @@ char *SDL_GetUserFolder(SDL_Folder folder)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
retval = SDL_strdup(base);
|
||||
retval = SDL_malloc(SDL_strlen(base) + 2);
|
||||
if (retval == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (SDL_snprintf(retval, SDL_strlen(base) + 2, "%s/", base) < 0) {
|
||||
SDL_SetError("Couldn't snprintf folder path for Cocoa: %s", base);
|
||||
SDL_free(retval);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
for (ptr = retval + 1; *ptr; ptr++) {
|
||||
if (*ptr == '/') {
|
||||
*ptr = '\0';
|
||||
@@ -221,7 +227,6 @@ char *SDL_GetUserFolder(SDL_Folder folder)
|
||||
*ptr = '/';
|
||||
}
|
||||
}
|
||||
mkdir(retval, 0700);
|
||||
|
||||
return retval;
|
||||
#endif /* SDL_PLATFORM_TVOS */
|
||||
|
@@ -97,7 +97,18 @@ char *SDL_GetUserFolder(SDL_Folder folder)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return SDL_strdup(home);
|
||||
char *retval = SDL_malloc(SDL_strlen(home) + 2);
|
||||
if (!retval) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (SDL_snprintf(retval, SDL_strlen(home) + 2, "%s/", home) < 0) {
|
||||
SDL_SetError("Couldn't snprintf home path for Emscripten: %s", home);
|
||||
SDL_free(retval);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
#endif /* SDL_FILESYSTEM_EMSCRIPTEN */
|
||||
|
@@ -107,15 +107,30 @@ char *SDL_GetUserFolder(SDL_Folder folder)
|
||||
|
||||
switch (folder) {
|
||||
case SDL_FOLDER_HOME:
|
||||
return SDL_strdup(home);
|
||||
retval = (char *) SDL_malloc(SDL_strlen(home) + 2);
|
||||
if (!retval) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (SDL_snprintf(retval, SDL_strlen(home) + 2, "%s/", home) < 0) {
|
||||
SDL_SetError("Couldn't snprintf home path for Haiku: %s", home);
|
||||
SDL_free(retval);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return retval;
|
||||
|
||||
/* TODO: Is Haiku's desktop folder always ~/Desktop/ ? */
|
||||
case SDL_FOLDER_DESKTOP:
|
||||
retval = (char *) SDL_malloc(SDL_strlen(home) + 10);
|
||||
if (!retval) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (retval) {
|
||||
SDL_strlcpy(retval, home, SDL_strlen(home) + 10);
|
||||
SDL_strlcat(retval, "/Desktop/", SDL_strlen(home) + 10);
|
||||
if (SDL_snprintf(retval, SDL_strlen(home) + 10, "%s/Desktop/", home) < 0) {
|
||||
SDL_SetError("Couldn't snprintf desktop path for Haiku: %s/Desktop/", home);
|
||||
SDL_free(retval);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return retval;
|
||||
|
@@ -514,6 +514,7 @@ char *SDL_GetUserFolder(SDL_Folder folder)
|
||||
{
|
||||
const char *param = NULL;
|
||||
char *retval;
|
||||
char *newretval;
|
||||
|
||||
/* According to `man xdg-user-dir`, the possible values are:
|
||||
DESKTOP
|
||||
@@ -594,6 +595,16 @@ char *SDL_GetUserFolder(SDL_Folder folder)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
newretval = (char *) SDL_realloc(retval, SDL_strlen(retval) + 2);
|
||||
|
||||
if (!newretval) {
|
||||
SDL_free(retval);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
retval = newretval;
|
||||
SDL_strlcat(retval, "/", SDL_strlen(retval) + 2);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@@ -322,6 +322,19 @@ char *SDL_GetUserFolder(SDL_Folder folder)
|
||||
}
|
||||
}
|
||||
|
||||
if (retval) {
|
||||
char *newretval = (char *) SDL_realloc(retval, SDL_strlen(retval) + 2);
|
||||
|
||||
if (!newretval) {
|
||||
SDL_free(retval);
|
||||
retval = NULL; /* will be returned */
|
||||
goto done;
|
||||
}
|
||||
|
||||
retval = newretval;
|
||||
SDL_strlcat(retval, "\\", SDL_strlen(retval) + 2);
|
||||
}
|
||||
|
||||
done:
|
||||
if (lib) {
|
||||
FreeLibrary(lib);
|
||||
|
@@ -250,6 +250,8 @@ char *SDL_GetUserFolder(SDL_Folder folder)
|
||||
return NULL;
|
||||
};
|
||||
|
||||
wpath += L"\\";
|
||||
|
||||
return WIN_StringToUTF8(wpath.c_str());
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user