Re: [PATCH 1/6] O_CLOEXEC O_NOFOLLOW O_DIRECTORY O_EXEC O_DIRECT
Sebastian Huber <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
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<[email protected]> >> --- >> 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 : [email protected] PGP : Public key available on request. Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.