[eglib] make g_mkdir_with_parents work for paths not ending in /
authorChris Toshok <toshok@gmail.com>
Sun, 1 May 2011 06:11:32 +0000 (23:11 -0700)
committerChris Toshok <toshok@gmail.com>
Sun, 1 May 2011 06:11:41 +0000 (23:11 -0700)
eglib/src/gdir-unix.c

index 24fd7750abaa2462ae5bee12dc5bd94492d48ddb..abca22f9e95c8f2b2cbc246275eb8f9773167dce 100644 (file)
@@ -120,18 +120,21 @@ g_mkdir_with_parents (const gchar *pathname, int mode)
        if (*d == '/')
                d++;
        
-       while (*d != '\0') {
-               if (*d == '/') {
-                       *d = '\0';
-                       rv = mkdir (path, mode);
-                       if (rv == -1 && errno != EEXIST) {
-                               g_free (path);
-                               return -1;
-                       }
-                       
-                       *d++ = '/';
-                       while (*d == '/')
-                               d++;
+       while (TRUE) {
+               if (*d == '/' || *d == '\0') {
+                 char orig = *d;
+                 *d = '\0';
+                 rv = mkdir (path, mode);
+                 if (rv == -1 && errno != EEXIST) {
+                       g_free (path);
+                       return -1;
+                 }
+
+                 *d++ = orig;
+                 while (orig == '/' && *d == '/')
+                       d++;
+                 if (orig == '\0')
+                       break;
                } else {
                        d++;
                }