Commits
04cad8f7 and
0c088568 supported old macOS systems that didn't
define O_CLOEXEC or O_DSYNC yet, but those arrived in macOS releases
10.7 and 10.6 (respectively), which themselves reached EOL around a
decade ago. We've already made use of other POSIX features that early
macOS vintages can't compile (for example commits
623cc673,
d2e15083).
A later commit will use O_CLOEXEC on POSIX systems so it would be
strange to pretend here that it's optional, and we might as well give
O_DSYNC the same treatment since the reference is also guarded by a test
for a macOS-specific macro, and we know that current Macs have it.
Discussion: https://postgr.es/m/CA%2BhUKGKb6FsAdQWcRL35KJsftv%2B9zXqQbzwkfRf1i0J2e57%2BhQ%40mail.gmail.com
*/
StaticAssertStmt((PG_O_DIRECT &
(O_APPEND |
+ O_CLOEXEC |
O_CREAT |
+ O_DSYNC |
O_EXCL |
O_RDWR |
O_RDONLY |
O_TRUNC |
O_WRONLY)) == 0,
"PG_O_DIRECT value collides with standard flag");
-#if defined(O_CLOEXEC)
- StaticAssertStmt((PG_O_DIRECT & O_CLOEXEC) == 0,
- "PG_O_DIRECT value collides with O_CLOEXEC");
-#endif
-#if defined(O_DSYNC)
- StaticAssertStmt((PG_O_DIRECT & O_DSYNC) == 0,
- "PG_O_DIRECT value collides with O_DSYNC");
-#endif
-
fd = open(fileName, fileFlags & ~PG_O_DIRECT, fileMode);
#else
fd = open(fileName, fileFlags, fileMode);