]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
fileio: add new WRITE_STRING_FILE_MKDIR_0755 flag for mkdir'ing parent
authorLennart Poettering <lennart@poettering.net>
Wed, 24 Apr 2019 16:42:13 +0000 (18:42 +0200)
committerLennart Poettering <lennart@poettering.net>
Wed, 8 May 2019 10:36:20 +0000 (06:36 -0400)
src/basic/fileio.c
src/basic/fileio.h

index 16034fb9e8a2d08a7813c6728ced5c86afc9ed95..4c18212668eddc4a7c466bcda787d3ae20ef5471 100644 (file)
@@ -21,6 +21,7 @@
 #include "log.h"
 #include "macro.h"
 #include "missing.h"
+#include "mkdir.h"
 #include "parse-util.h"
 #include "path-util.h"
 #include "stdio-util.h"
@@ -174,6 +175,12 @@ int write_string_file_ts(
         /* We don't know how to verify whether the file contents was already on-disk. */
         assert(!((flags & WRITE_STRING_FILE_VERIFY_ON_FAILURE) && (flags & WRITE_STRING_FILE_SYNC)));
 
+        if (flags & WRITE_STRING_FILE_MKDIR_0755) {
+                r = mkdir_parents(fn, 0755);
+                if (r < 0)
+                        return r;
+        }
+
         if (flags & WRITE_STRING_FILE_ATOMIC) {
                 assert(flags & WRITE_STRING_FILE_CREATE);
 
index eb551c7ac14c9be21d55c84eccce519f3bf18af6..05f6c89da09dcdc52d337af9b74d9fd8ea9f3b87 100644 (file)
@@ -21,6 +21,7 @@ typedef enum {
         WRITE_STRING_FILE_SYNC              = 1 << 4,
         WRITE_STRING_FILE_DISABLE_BUFFER    = 1 << 5,
         WRITE_STRING_FILE_NOFOLLOW          = 1 << 6,
+        WRITE_STRING_FILE_MKDIR_0755        = 1 << 7,
 
         /* And before you wonder, why write_string_file_atomic_label_ts() is a separate function instead of just one
            more flag here: it's about linking: we don't want to pull -lselinux into all users of write_string_file()