From: Paul Eggert Date: Fri, 30 May 2025 07:20:19 +0000 (-0700) Subject: man/man2/open.2: Fix doc for O_CREAT | O_DIRECTORY X-Git-Tag: man-pages-6.15~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f965ab610b1a6229196e03ee9d802f1c8b87c64;p=thirdparty%2Fman-pages.git man/man2/open.2: Fix doc for O_CREAT | O_DIRECTORY Although Linux kernels before 5.7 would create a regular file when opening a nonexistent file with O_CREAT | O_DIRECTORY, this behavior was changed to something deeply buggy in 5.7, and when the bug was fixed in 6.4 this combination of open flags became invalid. Adjust the documentation to match the 6.4+ behavior, which makes more sense anyway. Signed-off-by: Paul Eggert Message-ID: <20250530072029.344532-1-eggert@cs.ucla.edu> Signed-off-by: Alejandro Colomar --- diff --git a/man/man2/open.2 b/man/man2/open.2 index 948dcd62e..c47b2ad58 100644 --- a/man/man2/open.2 +++ b/man/man2/open.2 @@ -1068,6 +1068,16 @@ was specified. .TP .B EINVAL .B O_CREAT +and +.B O_DIRECTORY +were both specified in +.I flags , +and the Linux kernel version is 6.4 or later. +(Earlier kernels were inconsistent in this area, +and POSIX does not specify the behavior.) +.TP +.B EINVAL +.B O_CREAT was specified in .I flags and the final component ("basename") of the new file's @@ -1882,20 +1892,6 @@ and when trying to determine whether the kernel supports .B O_TMPFILE functionality. -.P -When both -.B O_CREAT -and -.B O_DIRECTORY -are specified in -.I flags -and the file specified by -.I path -does not exist, -.BR open () -will create a regular file (i.e., -.B O_DIRECTORY -is ignored). .SH SEE ALSO .BR chmod (2), .BR chown (2),