mirror of
https://github.com/Dasharo/systemd.git
synced 2026-03-06 15:02:31 -08:00
missing_fcntl: Fix RAW_O_LARGEFILE
This value is actually arch-specific, so this commit defines it for all the arches that set it to some custom value Fixes https://github.com/systemd/systemd/issues/31417
This commit is contained in:
@@ -69,9 +69,26 @@
|
||||
|
||||
/* So O_LARGEFILE is generally implied by glibc, and defined to zero hence, because we only build in LFS
|
||||
* mode. However, when invoking fcntl(F_GETFL) the flag is ORed into the result anyway — glibc does not mask
|
||||
* it away. Which sucks. Let's define the actual value here, so that we can mask it ourselves. */
|
||||
* it away. Which sucks. Let's define the actual value here, so that we can mask it ourselves.
|
||||
*
|
||||
* The precise definition is arch specific, so we use the values defined in the kernel (note that some
|
||||
* are hexa and others are octal; duplicated as-is from the kernel definitions):
|
||||
* - alpha, arm, arm64, m68k, mips, parisc, powerpc, sparc: each has a specific value;
|
||||
* - others: they use the "generic" value (defined in include/uapi/asm-generic/fcntl.h) */
|
||||
#if O_LARGEFILE != 0
|
||||
#define RAW_O_LARGEFILE O_LARGEFILE
|
||||
#else
|
||||
#define RAW_O_LARGEFILE 0100000
|
||||
#if defined(__alpha__) || defined(__arm__) || defined(__aarch64__) || defined(__m68k__)
|
||||
#define RAW_O_LARGEFILE 0400000
|
||||
#elif defined(__mips__)
|
||||
#define RAW_O_LARGEFILE 0x2000
|
||||
#elif defined(__parisc__) || defined(__hppa__)
|
||||
#define RAW_O_LARGEFILE 000004000
|
||||
#elif defined(__powerpc__)
|
||||
#define RAW_O_LARGEFILE 0200000
|
||||
#elif defined(__sparc__)
|
||||
#define RAW_O_LARGEFILE 0x40000
|
||||
#else
|
||||
#define RAW_O_LARGEFILE 00100000
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user