Christoph Mallon: Simplify avoidance of duplicate / in SDL_GetPrefPath()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
diff --git a/src/filesystem/unix/SDL_sysfilesystem.c b/src/filesystem/unix/SDL_sysfilesystem.c
index b3e5f5f..557b3f7 100644
--- a/src/filesystem/unix/SDL_sysfilesystem.c
+++ b/src/filesystem/unix/SDL_sysfilesystem.c
@@ -156,7 +156,7 @@ SDL_GetPrefPath(const char *org, const char *app)
* http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
*/
const char *envr = SDL_getenv("XDG_DATA_HOME");
- const char *append = "/";
+ const char *append;
char *retval = NULL;
char *ptr = NULL;
size_t len = 0;
@@ -169,18 +169,16 @@ SDL_GetPrefPath(const char *org, const char *app)
SDL_SetError("neither XDG_DATA_HOME nor HOME environment is set");
return NULL;
}
- if (envr[SDL_strlen(envr) - 1] == '/') {
- append = ".local/share/";
- } else {
- append = "/.local/share/";
- }
+ append = "/.local/share/";
} else {
- if (envr[SDL_strlen(envr) - 1] == '/') {
- append = "";
- }
+ append = "/";
} /* if */
- len = SDL_strlen(envr) + SDL_strlen(append) + SDL_strlen(app) + 2;
+ len = SDL_strlen(envr);
+ if (envr[len - 1] == '/')
+ append += 1;
+
+ len += SDL_strlen(append) + SDL_strlen(app) + 2;
retval = (char *) SDL_malloc(len);
if (!retval) {
SDL_OutOfMemory();