From: Michael Haggerty Date: Mon, 6 Jan 2014 13:45:21 +0000 (+0100) Subject: safe_create_leading_directories(): add explicit "slash" pointer X-Git-Tag: v1.9-rc1~10^2~14 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/831651fde8f8a8d90543917a8783962aa1a534bf?ds=inline;hp=--cc safe_create_leading_directories(): add explicit "slash" pointer 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 Signed-off-by: Junio C Hamano --- 831651fde8f8a8d90543917a8783962aa1a534bf diff --git a/sha1_file.c b/sha1_file.c index e52a0032e5..a2b9e3c502 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; }