From 2213820b6f4cd22bbfdc0f45741c3e7d17ae82c0 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Mon, 20 Apr 2026 23:02:13 +0300 Subject: [PATCH] Add O_SYMLINK emulation for MacOSX partial compatibility, defined as O_PATH | O_NOFOLLOW. fstat(2) and freadlink(3) works on the resulting file descriptors, but reads on the regular file do not. More complete but more hackish version was developed but deemed too hackish. Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D56365 --- sys/sys/fcntl.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sys/sys/fcntl.h b/sys/sys/fcntl.h index 0b13241f0ee..80cbca4ea75 100644 --- a/sys/sys/fcntl.h +++ b/sys/sys/fcntl.h @@ -142,6 +142,13 @@ typedef __pid_t pid_t; #define O_EMPTY_PATH 0x02000000 #define O_NAMEDATTR 0x04000000 /* NFSv4 named attributes */ #define O_XATTR O_NAMEDATTR /* Solaris compatibility */ + +/* + * Emulate MacOSX compatibility flag without consuming a flags bit. + * It is not fully correct since reads over regular files opened with + * this definition fail. + */ +#define O_SYMLINK (O_PATH | O_NOFOLLOW) #endif #if __POSIX_VISIBLE >= 202405