summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/io.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/io.c b/src/io.c
index 6488401..76d4490 100644
--- a/src/io.c
+++ b/src/io.c
@@ -1084,17 +1084,15 @@ int io_check_dir(const char *dir)
char *path = mem_strdup(dir);
char *index;
- int existed = 1;
+ int existed = 1, failed = 0;
errno = 0;
for (index = path + 1; *index; index++) {
if (*index == '/') {
*index = '\0';
if (mkdir(path, 0700) != 0) {
if (errno != EEXIST) {
- fprintf(stderr,
- _("FATAL ERROR: could not create %s: %s\n"),
- path, strerror(errno));
- exit_calcurse(EXIT_FAILURE);
+ failed = 1;
+ break;
}
} else {
existed = 0;
@@ -1103,17 +1101,20 @@ int io_check_dir(const char *dir)
}
}
- if (mkdir(path, 0700) != 0) {
- if (errno != EEXIST) {
- fprintf(stderr,
- _("FATAL ERROR: could not create %s: %s\n"),
- path, strerror(errno));
- exit_calcurse(EXIT_FAILURE);
- }
+ if (!failed && mkdir(path, 0700) != 0) {
+ if (errno != EEXIST)
+ failed = 1;
} else {
existed = 0;
}
+ if(failed) {
+ fprintf(stderr,
+ _("FATAL ERROR: could not create %s: %s\n"),
+ path, strerror(errno));
+ exit_calcurse(EXIT_FAILURE);
+ }
+
mem_free(path);
return existed;
}