Wrapped the detection of a Windows rooted path within a conditional compilation directive.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
diff --git a/src/fileops.c b/src/fileops.c
index c5cc73e..7a6ab73 100644
--- a/src/fileops.c
+++ b/src/fileops.c
@@ -312,6 +312,19 @@ int gitfo_dirent(
return GIT_SUCCESS;
}
+#ifdef GIT_WIN32
+
+static int is_windows_rooted_path(const char* path)
+{
+ /* Does the root of the path look like a windows drive ? */
+ if (isalpha(path[0]) && (path[1] == ':') && (path[2] == '/'))
+ return GIT_SUCCESS;
+
+ return GIT_ERROR;
+}
+
+#endif
+
int gitfo_mkdir_recurs(const char *path, int mode)
{
int error;
@@ -324,9 +337,12 @@ int gitfo_mkdir_recurs(const char *path, int mode)
error = GIT_SUCCESS;
pp = path_copy;
- /* Does the root of the path look like a windows drive ? */
- if (isalpha(pp[0]) && (pp[1] == ':') && (pp[2] == '/'))
- pp += 2;
+#ifdef GIT_WIN32
+
+ if (!is_windows_rooted_path(pp))
+ pp += 2; /* Skip the drive name (eg. C: or D:) */
+
+#endif
while (error == GIT_SUCCESS && (sp = strchr(pp, '/')) != 0) {
if (sp != pp && gitfo_isdir(path_copy) < GIT_SUCCESS) {