[PATCH 1/6] O_CLOEXEC O_NOFOLLOW O_DIRECTORY O_EXEC O_DIRECT
Sebastian Huber
sebastian.huber@embedded-brains.de
Wed Oct 10 11:35:00 GMT 2018
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.
More information about the Newlib
mailing list