diff options
author | Florian Weimer <fweimer@redhat.com> | 2017-11-04 00:57:19 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2017-11-04 00:57:42 +0100 |
commit | b9af29c02074a9b7de5a31bc347f8e327caff926 (patch) | |
tree | a54ab208c2d7b5ac570fdcbf6822cd63e2f7d666 | |
parent | 4ca70e1a2bb266756692ebfd0a757a960bc8796c (diff) | |
download | glibc-b9af29c02074a9b7de5a31bc347f8e327caff926.tar.gz glibc-b9af29c02074a9b7de5a31bc347f8e327caff926.tar.xz glibc-b9af29c02074a9b7de5a31bc347f8e327caff926.zip |
manual: Document the O_TMPFILE flag
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | manual/llio.texi | 28 |
2 files changed, 32 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index 44d55184cc..57a8caef03 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2017-11-04 Florian Weimer <fweimer@redhat.com> + + * manual/llio.texi (Open-time Flags): Document O_TMPFILE. + 2017-11-03 Joseph Myers <joseph@codesourcery.com> * math/math.h [__HAVE_DISTINCT_FLOAT16 diff --git a/manual/llio.texi b/manual/llio.texi index e72c53c785..10ad546723 100644 --- a/manual/llio.texi +++ b/manual/llio.texi @@ -3478,6 +3478,34 @@ If set, the file will be created if it doesn't already exist. If both @code{O_CREAT} and @code{O_EXCL} are set, then @code{open} fails if the specified file already exists. This is guaranteed to never clobber an existing file. + +The @code{O_EXCL} flag has a special meaning in combination with +@code{O_TMPFILE}; see below. +@end deftypevr + +@deftypevr Macro int O_TMPFILE +@standards{GNU, fcntl.h} +If this flag is specified, functions in the @code{open} family create an +unnamed temporary file. In this case, the pathname argument to the +@code{open} family of functions (@pxref{Opening and Closing Files}) is +interpreted as the directory in which the temporary file is created +(thus determining the file system which provides the storage for the +file). The @code{O_TMPFILE} flag must be combined with @code{O_WRONLY} +or @code{O_RDWR}, and the @var{mode} argument is required. + +The temporary file can later be given a name using @code{linkat}, +turning it into a regular file. This allows the atomic creation of a +file with the specific file attributes (mode and extended attributes) +and file contents. If, for security reasons, it is not desirable that a +name can be given to the file, the @code{O_EXCL} flag can be specified +along with @code{O_TMPFILE}. + +Not all kernels support this open flag. If this flag is unsupported, an +attempt to create an unnamed temporary file fails with an error of +@code{EINVAL}. If the underlying file system does not support the +@code{O_TMPFILE} flag, an @code{EOPNOTSUPP} error is the result. + +The @code{O_TMPFILE} flag is a GNU extension. @end deftypevr @deftypevr Macro int O_NONBLOCK |