From 6797a74f789210dc0ea475a1d066688c6ce5e929 Mon Sep 17 00:00:00 2001 From: williamvds Date: Wed, 21 Oct 2020 17:18:25 +0100 Subject: [PATCH] Add WRITE_STRING_FILE_TRUNCATE to set O_TRUNC --- src/basic/fileio.c | 3 ++- src/basic/fileio.h | 17 +++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/basic/fileio.c b/src/basic/fileio.c index c5a093a857..050c8709f8 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -252,7 +252,8 @@ int write_string_file_ts( /* We manually build our own version of fopen(..., "we") that works without O_CREAT and with O_NOFOLLOW if needed. */ fd = open(fn, O_WRONLY|O_CLOEXEC|O_NOCTTY | (FLAGS_SET(flags, WRITE_STRING_FILE_NOFOLLOW) ? O_NOFOLLOW : 0) | - (FLAGS_SET(flags, WRITE_STRING_FILE_CREATE) ? O_CREAT : 0), + (FLAGS_SET(flags, WRITE_STRING_FILE_CREATE) ? O_CREAT : 0) | + (FLAGS_SET(flags, WRITE_STRING_FILE_TRUNCATE) ? O_TRUNC : 0), (FLAGS_SET(flags, WRITE_STRING_FILE_MODE_0600) ? 0600 : 0666)); if (fd < 0) { r = -errno; diff --git a/src/basic/fileio.h b/src/basic/fileio.h index 9cba5a90e3..963d7d08fc 100644 --- a/src/basic/fileio.h +++ b/src/basic/fileio.h @@ -16,14 +16,15 @@ typedef enum { WRITE_STRING_FILE_CREATE = 1 << 0, - WRITE_STRING_FILE_ATOMIC = 1 << 1, - WRITE_STRING_FILE_AVOID_NEWLINE = 1 << 2, - WRITE_STRING_FILE_VERIFY_ON_FAILURE = 1 << 3, - 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, - WRITE_STRING_FILE_MODE_0600 = 1 << 8, + WRITE_STRING_FILE_TRUNCATE = 1 << 1, + WRITE_STRING_FILE_ATOMIC = 1 << 2, + WRITE_STRING_FILE_AVOID_NEWLINE = 1 << 3, + WRITE_STRING_FILE_VERIFY_ON_FAILURE = 1 << 4, + WRITE_STRING_FILE_SYNC = 1 << 5, + WRITE_STRING_FILE_DISABLE_BUFFER = 1 << 6, + WRITE_STRING_FILE_NOFOLLOW = 1 << 7, + WRITE_STRING_FILE_MKDIR_0755 = 1 << 8, + WRITE_STRING_FILE_MODE_0600 = 1 << 9, /* 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()