[PATCH v2 03/17] safe_create_leading_directories(): add explicit "slash" pointer
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Jan 6, 2014, 13:45 UTC
- Message-ID
- <1389015935-21936-4-git-send-email-mhagger@alum.mit.edu>
- In-Reply-To
- <1389015935-21936-1-git-send-email-mhagger@alum.mit.edu>
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> --- sha1_file.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/sha1_file.c b/sha1_file.c index cc9957e..197766d 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