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 <mhag...@alum.mit.edu>
---
 sha1_file.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/sha1_file.c b/sha1_file.c
index d8647c7..88b8d8c 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -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;
 }
-- 
1.8.5.2

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to