safe_create_leading_directories(): add explicit "slash" pointer
authorMichael Haggerty <mhagger@alum.mit.edu>
Mon, 6 Jan 2014 13:45:21 +0000 (14:45 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 6 Jan 2014 17:34:19 +0000 (09:34 -0800)
Keep track of the position of the slash character independently of
"pos", thereby making the purpose of each variable clearer and
working towards other upcoming changes.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_file.c
index e52a0032e556fe0907de1a6f9e10b09c6bfc6dc9..a2b9e3c50293ea5edd2a425168ed506bdc78b22f 100644 (file)
@@ -111,19 +111,21 @@ int safe_create_leading_directories(char *path)
 
        while (pos) {
                struct stat st;
+               char *slash = strchr(pos, '/');
 
-               pos = strchr(pos, '/');
-               if (!pos)
+               if (!slash)
                        break;
-               while (*++pos == '/')
-                       ;
+               while (*(slash + 1) == '/')
+                       slash++;
+               pos = slash + 1;
                if (!*pos)
                        break;
-               *--pos = '\0';
+
+               *slash = '\0';
                if (!stat(path, &st)) {
                        /* path exists */
                        if (!S_ISDIR(st.st_mode)) {
-                               *pos = '/';
+                               *slash = '/';
                                return -3;
                        }
                } else if (mkdir(path, 0777)) {
@@ -131,14 +133,14 @@ int safe_create_leading_directories(char *path)
                            !stat(path, &st) && S_ISDIR(st.st_mode)) {
                                ; /* somebody created it since we checked */
                        } else {
-                               *pos = '/';
+                               *slash = '/';
                                return -1;
                        }
                } else if (adjust_shared_perm(path)) {
-                       *pos = '/';
+                       *slash = '/';
                        return -2;
                }
-               *pos++ = '/';
+               *slash = '/';
        }
        return 0;
 }