* doc/posix-headers/fcntl.texi (fcntl.h): Document the bug.
* lib/fcntl.in.h (O_ACCMODE): Fix it.
Signed-off-by: Eric Blake <eblake@redhat.com>
2011-04-08 Eric Blake <eblake@redhat.com>
+ fcntl-h: fix O_ACCMODE on cygwin
+ * doc/posix-headers/fcntl.texi (fcntl.h): Document the bug.
+ * lib/fcntl.in.h (O_ACCMODE): Fix it.
+
pipe-filter: drop O_NONBLOCK workarounds
* modules/pipe-filter-gi (Depends-on): Add fcntl-h.
* modules/pipe-filter-ii (Depends-on): Likewise.
@samp{O_EXEC} and @samp{O_SEARCH} are not defined on some platforms.
Gnulib defines these macros to @samp{O_RDONLY}, which is typically 0.
+@item
+The @samp{O_ACCMODE} mask mistakenly omits @samp{O_SEARCH} and
+@samp{O_EXEC} on some platforms:
+Cygwin.
+
@item
@samp{O_BINARY}, @samp{O_TEXT} (not specified by POSIX, but essential for
portability to Woe32 platforms) are defined on some platforms but not on
# define O_TTY_INIT 0
#endif
+#if O_ACCMODE != (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
+# undef O_ACCMODE
+# define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
+#endif
+
/* For systems that distinguish between text and binary I/O.
O_BINARY is usually declared in fcntl.h */
#if !defined O_BINARY && defined _O_BINARY