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 <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Michael Haggerty 2014-01-06 14:45:21 +01:00 коммит произвёл Junio C Hamano
Родитель f05023324c
Коммит 831651fde8
1 изменённых файлов: 11 добавлений и 9 удалений

Просмотреть файл

@ -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;
}