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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.