This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 1/6] O_CLOEXEC O_NOFOLLOW O_DIRECTORY O_EXEC O_DIRECT


On 10/10/2018 11:47, Corinna Vinschen wrote:
On Oct  8 15:38, Sebastian Huber wrote:
Make O_CLOEXEC, O_NOFOLLOW, O_DIRECTORY, O_EXEC, and O_DIRECT available
to non-Cygwin systems.

Signed-off-by: Sebastian Huber<sebastian.huber@embedded-brains.de>
---
  newlib/libc/include/sys/_default_fcntl.h | 46 ++++++++++++++++++--------------
  1 file changed, 26 insertions(+), 20 deletions(-)

diff --git a/newlib/libc/include/sys/_default_fcntl.h b/newlib/libc/include/sys/_default_fcntl.h
index 33b462285..19fe65cfd 100644
--- a/newlib/libc/include/sys/_default_fcntl.h
+++ b/newlib/libc/include/sys/_default_fcntl.h
@@ -23,6 +23,19 @@ extern "C" {
  #define	_FNONBLOCK	0x4000	/* non blocking I/O (POSIX style) */
  #define	_FNDELAY	_FNONBLOCK	/* non blocking I/O (4.2 style) */
  #define	_FNOCTTY	0x8000	/* don't assign a ctty on this open */
+#if defined (__CYGWIN__)
+#define _FBINARY        0x10000
+#define _FTEXT          0x20000
+#endif
+#define _FNOINHERIT	0x40000
+#define _FDIRECT        0x80000
+#define _FNOFOLLOW      0x100000
+#define _FDIRECTORY     0x200000
+#define _FEXECSRCH      0x400000
+#if defined (__CYGWIN__)
+#define _FTMPFILE       0x800000
+#define _FNOATIME       0x1000000
+#endif
#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) @@ -43,35 +56,28 @@ extern "C" {
  /*	O_NDELAY	_FNBIO 		set in include/fcntl.h */
  #define	O_NONBLOCK	_FNONBLOCK
  #define	O_NOCTTY	_FNOCTTY
-/* For machines which care - */
-#if defined (__CYGWIN__)
-#define _FBINARY        0x10000
-#define _FTEXT          0x20000
-#define _FNOINHERIT	0x40000
-#define _FDIRECT        0x80000
-#define _FNOFOLLOW      0x100000
-#define _FDIRECTORY     0x200000
-#define _FEXECSRCH      0x400000
-#define _FTMPFILE       0x800000
-#define _FNOATIME       0x1000000
+/* POSIX-1.2008 specific flags */
+#if __POSIX_VISIBLE >= 200809
+#define O_CLOEXEC	_FNOINHERIT
+#define O_NOFOLLOW	_FNOFOLLOW
+#define O_DIRECTORY	_FDIRECTORY
+#define	O_EXEC		_FEXECSRCH
+#endif
+
+#if __GNU_VISIBLE || __BSD_VISIBLE
+#define O_DIRECT	_FDIRECT
+#endif
This is actually a BSD flag?  If so, `#if __BSD_VISIBLE' should
suffice since that's implied by setting _GNU_SOURCE.

The O_DIRECT is documented in the FreeBSD man page:

https://www.freebsd.org/cgi/man.cgi?sektion=2&query=open

The guard is __BSD_VISIBLE:

https://github.com/freebsd/freebsd/blob/master/sys/sys/fcntl.h#L116

I will change this to use __BSD_VISIBLE only.

--
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]