Commit 321aa4ae10213691e4f29f00917134ce581d41fa

Sam Lantinga 2013-08-29T08:24:43

Christoph Mallon: Simplify avoidance of duplicate / in SDL_GetPrefPath()

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();