]> err.no Git - systemd/commitdiff
util: introduce mkdir_p()
authorLennart Poettering <lennart@poettering.net>
Sat, 10 Apr 2010 02:38:33 +0000 (04:38 +0200)
committerLennart Poettering <lennart@poettering.net>
Sat, 10 Apr 2010 02:38:33 +0000 (04:38 +0200)
util.c
util.h

diff --git a/util.c b/util.c
index 3fe59c8ebba4b1a425bb0e4ee6bd2860d2715f9b..29f48b08e3b918991350caa2794682a239b7ca5e 100644 (file)
--- a/util.c
+++ b/util.c
@@ -728,6 +728,20 @@ int mkdir_parents(const char *path, mode_t mode) {
         }
 }
 
+int mkdir_p(const char *path, mode_t mode) {
+        int r;
+
+        /* Like mkdir -p */
+
+        if ((r = mkdir_parents(path, mode)) < 0)
+                return r;
+
+        if (mkdir(path, mode) < 0)
+                return -errno;
+
+        return 0;
+}
+
 char hexchar(int x) {
         static const char table[16] = "0123456789abcdef";
 
diff --git a/util.h b/util.h
index 4881c981b9dedf1a6d41dd58127e7d37aa71f2f2..b22074edec3d033094e566964dd5be8d6bf9d5c9 100644 (file)
--- a/util.h
+++ b/util.h
@@ -137,6 +137,7 @@ char *truncate_nl(char *s);
 
 char *file_in_same_dir(const char *path, const char *filename);
 int mkdir_parents(const char *path, mode_t mode);
+int mkdir_p(const char *path, mode_t mode);
 
 int get_process_name(pid_t pid, char **name);