diff --git a/src/fileops.c b/src/fileops.c index a25796a7b..f2a08e8fb 100644 --- a/src/fileops.c +++ b/src/fileops.c @@ -323,10 +323,15 @@ int gitfo_mkdir_recurs(const char *path, int mode) error = GIT_SUCCESS; pp = path_copy; - while (error == 0 && (sp = strchr(pp, '/')) != 0) { + while (error == GIT_SUCCESS && (sp = strchr(pp, '/')) != 0) { if (sp != pp && gitfo_isdir(path_copy) < GIT_SUCCESS) { *sp = 0; error = gitfo_mkdir(path_copy, mode); + + /* Do not choke while trying to recreate an existing directory */ + if (errno == EEXIST) + error = GIT_SUCCESS; + *sp = '/'; }