summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mkdir.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/mkdir.c b/mkdir.c
index 853980e..43e8958 100644
--- a/mkdir.c
+++ b/mkdir.c
@@ -65,6 +65,12 @@ static int mk_dir(char *path, mode_t mode, int flags)
}
if (mkdir(path, mode) != 0) {
+ if ((flags & PARENTS) && (errno == EEXIST)) {
+ struct stat st;
+ if (stat(path, &st) == 0 && S_ISDIR(st.st_mode)) {
+ return 0;
+ }
+ }
fprintf(stderr, "mkdir: %s: %s\n", path, strerror(errno));
return 1;
}