From: Lennart Poettering Date: Wed, 24 Apr 2019 16:42:13 +0000 (+0200) Subject: fileio: add new WRITE_STRING_FILE_MKDIR_0755 flag for mkdir'ing parent X-Git-Tag: v243-rc1~361^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=50ccd8645379e2c36f6437f6ef6ddb4d49e59342;p=thirdparty%2Fsystemd.git fileio: add new WRITE_STRING_FILE_MKDIR_0755 flag for mkdir'ing parent --- diff --git a/src/basic/fileio.c b/src/basic/fileio.c index 16034fb9e8a..4c18212668e 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -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); diff --git a/src/basic/fileio.h b/src/basic/fileio.h index eb551c7ac14..05f6c89da09 100644 --- a/src/basic/fileio.h +++ b/src/basic/fileio.h @@ -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()