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
This commit is contained in:
Konstantin Belousov
2026-04-20 23:02:13 +03:00
parent fbecfc4aa0
commit 2213820b6f
+7
View File
@@ -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