diff options
Diffstat (limited to 'sha1_file.c')
-rw-r--r-- | sha1_file.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/sha1_file.c b/sha1_file.c index 2a86912e14..ed814e546f 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -132,6 +132,17 @@ enum scld_error safe_create_leading_directories(char *path) if (errno == EEXIST && !stat(path, &st) && S_ISDIR(st.st_mode)) ; /* somebody created it since we checked */ + else if (errno == ENOENT) + /* + * Either mkdir() failed because + * somebody just pruned the containing + * directory, or stat() failed because + * the file that was in our way was + * just removed. Either way, inform + * the caller that it might be worth + * trying again: + */ + ret = SCLD_VANISHED; else ret = SCLD_FAILED; } else if (adjust_shared_perm(path)) { |