summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2003-09-04 19:18:40 +0000
committerLennart Poettering <lennart@poettering.net>2003-09-04 19:18:40 +0000
commit9c4d6b4246e913d003afcf8d82bbeb3053796d8d (patch)
treebac058267d2ce2d19a28d8db17f8060854490f3a
parenteacba0d9e002a7eeb410b0113a1359325f84e5f4 (diff)
real fix for mkdir_p
git-svn-id: file:///home/lennart/svn/public/syrep/trunk@28 07ea20a6-d2c5-0310-9e02-9ef735347d72
-rw-r--r--src/util.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/util.c b/src/util.c
index 6002738..f2906b1 100644
--- a/src/util.c
+++ b/src/util.c
@@ -561,14 +561,17 @@ int mkdir_p(const char *path, mode_t m) {
quit = 1;
}
- *e = 0;
- if (mkdir(tmp, m) < 0) {
- if (errno != EEXIST) {
- fprintf(stderr, "XX mkdir(\"%s\"): %s\n", tmp, strerror(errno));
- return -1;
+ if (e != b) {
+ *e = 0;
+
+ if (mkdir(tmp, m) < 0) {
+ if (errno != EEXIST) {
+ fprintf(stderr, "mkdir(\"%s\"): %s\n", tmp, strerror(errno));
+ return -1;
+ }
}
+ *e = '/';
}
- *e = '/';
b = e+1;
}