diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h index 75cc5310c7..25ad3e9361 100644 --- a/src/basic/fd-util.h +++ b/src/basic/fd-util.h @@ -44,6 +44,12 @@ # endif #endif +/* On musl, O_ACCMODE is defined as (03|O_SEARCH), unlike glibc which defines it as + * (O_RDONLY|O_WRONLY|O_RDWR). Additionally, O_SEARCH is simply defined as O_PATH. This changes the behaviour + * of O_ACCMODE in certain situations, which we don't want. This definition is copied from glibc and works + * around the problems with musl's definition. */ +#define O_ACCMODE_STRICT (O_RDONLY|O_WRONLY|O_RDWR) + int close_nointr(int fd); int safe_close(int fd); void safe_close_pair(int p[static 2]); diff --git a/src/basic/include/fcntl.h b/src/basic/include/fcntl.h index 344287f768..5f1d90ad79 100644 --- a/src/basic/include/fcntl.h +++ b/src/basic/include/fcntl.h @@ -17,9 +17,3 @@ #ifndef AT_HANDLE_FID #define AT_HANDLE_FID AT_REMOVEDIR #endif - -/* On musl, O_ACCMODE is defined as (03|O_SEARCH), unlike glibc which defines it as - * (O_RDONLY|O_WRONLY|O_RDWR). Additionally, O_SEARCH is simply defined as O_PATH. This changes the behaviour - * of O_ACCMODE in certain situations, which we don't want. This definition is copied from glibc and works - * around the problems with musl's definition. */ -#define O_ACCMODE_STRICT (O_RDONLY|O_WRONLY|O_RDWR) diff --git a/src/libsystemd/sd-journal/journal-file.c b/src/libsystemd/sd-journal/journal-file.c index 224c3e23c7..baabb92fd7 100644 --- a/src/libsystemd/sd-journal/journal-file.c +++ b/src/libsystemd/sd-journal/journal-file.c @@ -4694,6 +4694,11 @@ bool journal_file_rotate_suggested(JournalFile *f, usec_t max_file_usec, int log return false; } +bool journal_file_writable(JournalFile *f) { + assert(f); + return (f->open_flags & O_ACCMODE_STRICT) != O_RDONLY; +} + static const char * const journal_object_type_table[] = { [OBJECT_UNUSED] = "unused", [OBJECT_DATA] = "data", diff --git a/src/libsystemd/sd-journal/journal-file.h b/src/libsystemd/sd-journal/journal-file.h index 9598879066..4a5e0d81e2 100644 --- a/src/libsystemd/sd-journal/journal-file.h +++ b/src/libsystemd/sd-journal/journal-file.h @@ -378,7 +378,4 @@ static inline uint32_t COMPRESSION_TO_HEADER_INCOMPATIBLE_FLAG(Compression c) { } } -static inline bool journal_file_writable(JournalFile *f) { - assert(f); - return (f->open_flags & O_ACCMODE_STRICT) != O_RDONLY; -} +bool journal_file_writable(JournalFile *f); diff --git a/src/shared/journal-file-util.c b/src/shared/journal-file-util.c index ce799e9256..990146b624 100644 --- a/src/shared/journal-file-util.c +++ b/src/shared/journal-file-util.c @@ -9,6 +9,7 @@ #include "chattr-util.h" #include "copy.h" #include "errno-util.h" +#include "fd-util.h" #include "journal-authenticate.h" #include "journal-file-util.h" #include "log.h"