summaryrefslogtreecommitdiff
path: root/ctdb/common/system_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'ctdb/common/system_util.c')
-rw-r--r--ctdb/common/system_util.c49
1 files changed, 2 insertions, 47 deletions
diff --git a/ctdb/common/system_util.c b/ctdb/common/system_util.c
index 63dcd53795b..f27eed7038d 100644
--- a/ctdb/common/system_util.c
+++ b/ctdb/common/system_util.c
@@ -41,6 +41,8 @@
#include <procinfo.h>
#endif
+#include "lib/util/mkdir_p.h"
+
/*
if possible, make this task real time
*/
@@ -272,53 +274,6 @@ void lockdown_memory(bool valgrinding)
#endif
}
-int mkdir_p(const char *dir, int mode)
-{
- char t[PATH_MAX];
- ssize_t len;
- int ret;
-
- if (strcmp(dir, "/") == 0) {
- return 0;
- }
-
- if (strcmp(dir, ".") == 0) {
- return 0;
- }
-
- /* Try to create directory */
- ret = mkdir(dir, mode);
- /* Succeed if that worked or if it already existed */
- if (ret == 0 || errno == EEXIST) {
- return 0;
- }
- /* Fail on anything else except ENOENT */
- if (errno != ENOENT) {
- return ret;
- }
-
- /* Create ancestors */
- len = strlen(dir);
- if (len >= PATH_MAX) {
- errno = ENAMETOOLONG;
- return -1;
- }
- strncpy(t, dir, len+1);
-
- ret = mkdir_p(dirname(t), mode);
- if (ret != 0) {
- return ret;
- }
-
- /* Create directory */
- ret = mkdir(dir, mode);
- if ((ret == -1) && (errno == EEXIST)) {
- ret = 0;
- }
-
- return ret;
-}
-
void mkdir_p_or_die(const char *dir, int mode)
{
int ret;