summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorDavid Mulder <dmulder@suse.com>2017-03-08 08:33:56 -0700
committerGarming Sam <garming@samba.org>2017-11-20 21:41:14 +0100
commit6159b8eb6a6df0743c35c9cf533c4cc1883c72c2 (patch)
treef590b1e6bfb29b89a9df548cc52925a61ad441be /ctdb
parenta80296b12e38ef3fb8d4601f0e0564c294f9dbc9 (diff)
downloadsamba-6159b8eb6a6df0743c35c9cf533c4cc1883c72c2.tar.gz
gpo: move mkdir_p to lib/util
Move the mkdir_p function to lib/util so it can be used elsewhere Signed-off-by: David Mulder <dmulder@suse.com> Reviewed-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'ctdb')
-rw-r--r--ctdb/common/system.h1
-rw-r--r--ctdb/common/system_util.c49
2 files changed, 2 insertions, 48 deletions
diff --git a/ctdb/common/system.h b/ctdb/common/system.h
index ae01c58cfed..e6f65b5e621 100644
--- a/ctdb/common/system.h
+++ b/ctdb/common/system.h
@@ -53,7 +53,6 @@ bool parse_ip_mask(const char *str, const char *ifaces, ctdb_sock_addr *addr,
void lockdown_memory(bool valgrinding);
-int mkdir_p(const char *dir, int mode);
void mkdir_p_or_die(const char *dir, int mode);
void ctdb_wait_for_process_to_exit(pid_t pid);
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;