Re: Clarification for mkostemp/mkostemps man page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Janne,

On 12/17/13 20:56, Janne Blomqvist wrote:
> Hello,
> 
> currently the man page for mkostemp/mkostemps says
> 
> """The mkostemp() function is like mkstemp(), with the difference that
> flags as for open(2) may be specified in flags (e.g., O_APPEND,
> O_SYNC)."""
> 
> To be more precise, the implementation massages the flags argument as follows:
> 
> (flags & ~O_ACCMODE) | O_RDWR | O_CREAT | O_EXCL
> 
> That is, there is no need to explicitly include O_RDWR | O_CREAT |
> O_EXCL in flags, as it's added implicitly.
> 
> So I suggest that the manpage should instead state that *additional*
> flags may be specified in the flags argument.
> 
> This issue is a potential portability problem. FreeBSD 10+ also has
> mkostemp{s}, but generates an error if O_RDWR | O_CREAT | O_EXCL is
> present instead of silently accepting it. While annoying, this
> difference in behavior seems Ok by the proposed addition of mkostemp
> to some future POSIX standard, see
> 
> http://austingroupbugs.net/view.php?id=411
> 
> """
> The mkostemp( ) function shall be equivalent to the mkstemp( )
> function, except that the flag argument may contain additional flags
> (from <fcntl.h>) to be used as if by open( ). Behavior is unspecified
> if the flag argument contains more than the following flags:
> 
> O_APPEND Set append mode.
> 
> O_CLOEXEC Set the FD_CLOEXEC file descriptor flag.
> 
> <SIO>O_DSYNC Write according to the synchronized I/O data integrity
> completion.</SIO>
> 
> <SIO>O_RSYNC Synchronized read I/O operations.</SIO>
> 
> <XSI|SIO>O_SYNC Write according to synchronized I/O file integrity
> completion.</XSI|SIO>
> """

Thank you for the very detailed report. I applied the patch below. Okay?

Cheers,

Michael

diff --git a/man3/mkstemp.3 b/man3/mkstemp.3
index 40cd7e6..d2367bb 100644
--- a/man3/mkstemp.3
+++ b/man3/mkstemp.3
@@ -101,13 +101,32 @@ The
 .BR mkostemp ()
 function is like
 .BR mkstemp (),
-with the difference that flags as for
-.BR open (2)
-may be specified in
-.IR flags
-(e.g.,
+with the difference that the following bits\(emwith the same meaning as for
+.BR open (2)\(emmay
+be specified in
+.IR flags :
 .BR O_APPEND ,
-.BR O_SYNC ).
+.BR O_CLOEXEC ,
+and
+.BR O_SYNC .
+Note that when creating the file,
+.BR mkostemp ()
+includes the values
+.BR O_RDWR ,
+.BR O_CREAT ,
+and
+.BR O_EXCL
+in the
+.I flags
+argument given to
+.BR open (2);
+including these values in the
+.I flags
+argument given to
+.BR mkostemp ()
+is unnecessary, and produces errors on some
+.\" Reportedly, FreeBSD
+systems.
 
 The
 .BR mkstemps ()


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux