standards/188173: O_NOFOLLOW visibility not POSIX 2008 conforming
Sergey Kandaurov
pluknet at gmail.com
Sat Apr 5 22:10:01 UTC 2014
The following reply was made to PR standards/188173; it has been noted by GNATS.
From: Sergey Kandaurov <pluknet at gmail.com>
To: Jilles Tjoelker <jilles at stack.nl>
Cc: Konstantin Belousov <kostikbel at gmail.com>, standards at freebsd.org,
freebsd-gnats-submit at freebsd.org,
Christian Neukirchen <chneukirchen at gmail.com>
Subject: Re: standards/188173: O_NOFOLLOW visibility not POSIX 2008 conforming
Date: Sun, 6 Apr 2014 02:08:11 +0400
On 6 April 2014 00:47, Jilles Tjoelker <jilles at stack.nl> wrote:
> On Sat, Apr 05, 2014 at 11:16:07PM +0300, Konstantin Belousov wrote:
>> On Tue, Apr 01, 2014 at 03:31:31PM +0000, Christian Neukirchen wrote:
>> > >Fix:
>> > Adjust the condition in /usr/include/sys/fcntl.h to use _POSIX_C_SOURCE >= 200809
>> >
>> > #if __BSD_VISIBLE
>> > #define O_NOFOLLOW 0x0100 /* don't follow symlinks */
>> > #endif
>> >
>
>> Thank you for noting this. Still, I want to formally request your
>> confirmation that the following patch works for you. I only have 1003.1,
>> 2013 access right now.
>
>> diff --git a/sys/sys/fcntl.h b/sys/sys/fcntl.h
>> index 3461f8b..2691449 100644
>> --- a/sys/sys/fcntl.h
>> +++ b/sys/sys/fcntl.h
>> @@ -96,7 +96,7 @@ typedef __pid_t pid_t;
>> #define O_FSYNC 0x0080 /* synchronous writes */
>> #endif
>> #define O_SYNC 0x0080 /* POSIX synonym for O_FSYNC */
>> -#if __BSD_VISIBLE
>> +#if __POSIX_VISIBLE >= 200809
>> #define O_NOFOLLOW 0x0100 /* don't follow symlinks */
>> #endif
>> #define O_CREAT 0x0200 /* create if nonexistent */
>
> This looks good, but I went ahead and made the other new POSIX.1-2008
> things visible as well and removed redundant __BSD_VISIBLE condition
> parts:
It looks good to me, and I have had a subset of this change locally.
>
> Index: sys/sys/fcntl.h
> ===================================================================
> --- sys/sys/fcntl.h (revision 263842)
> +++ sys/sys/fcntl.h (working copy)
> @@ -96,7 +96,7 @@ typedef __pid_t pid_t;
> #define O_FSYNC 0x0080 /* synchronous writes */
> #endif
> #define O_SYNC 0x0080 /* POSIX synonym for O_FSYNC */
> -#if __BSD_VISIBLE
> +#if __POSIX_VISIBLE >= 200809
> #define O_NOFOLLOW 0x0100 /* don't follow symlinks */
> #endif
> #define O_CREAT 0x0200 /* create if nonexistent */
> @@ -115,7 +115,7 @@ typedef __pid_t pid_t;
> #endif
>
> /* Defined by POSIX Extended API Set Part 2 */
I'd also remove this line as well. It looks useless now.
> -#if __BSD_VISIBLE
> +#if __POSIX_VISIBLE >= 200809
> #define O_DIRECTORY 0x00020000 /* Fail if not directory */
> #define O_EXEC 0x00040000 /* Open for execute only */
> #endif
> @@ -184,7 +184,7 @@ typedef __pid_t pid_t;
> #endif
>
> /* Defined by POSIX Extended API Set Part 2 */
See above.
> -#if __BSD_VISIBLE
> +#if __POSIX_VISIBLE >= 200809
> /*
> * Magic value that specify the use of the current working directory
> * to determine the target of relative file paths in the openat() and
[...]
--
wbr,
pluknet
More information about the freebsd-standards
mailing list