diff options
Diffstat (limited to 'upstream/archlinux/man3p/mkdtemp.3p')
-rw-r--r-- | upstream/archlinux/man3p/mkdtemp.3p | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/upstream/archlinux/man3p/mkdtemp.3p b/upstream/archlinux/man3p/mkdtemp.3p new file mode 100644 index 00000000..ddeff2e1 --- /dev/null +++ b/upstream/archlinux/man3p/mkdtemp.3p @@ -0,0 +1,249 @@ +'\" et +.TH MKDTEMP "3P" 2017 "IEEE/The Open Group" "POSIX Programmer's Manual" +.\" +.SH PROLOG +This manual page is part of the POSIX Programmer's Manual. +The Linux implementation of this interface may differ (consult +the corresponding Linux manual page for details of Linux behavior), +or the interface may not be implemented on Linux. +.\" +.SH NAME +mkdtemp, mkstemp +\(em create a unique directory or file +.SH SYNOPSIS +.LP +.nf +#include <stdlib.h> +.P +char *mkdtemp(char *\fItemplate\fP); +int mkstemp(char *\fItemplate\fP); +.fi +.SH DESCRIPTION +The +\fImkdtemp\fR() +function shall create a directory with a unique name derived from +.IR template . +The application shall ensure that the string provided in +.IR template +is a pathname ending with at least six trailing +.BR 'X' +characters. The +\fImkdtemp\fR() +function shall modify the contents of +.IR template +by replacing six or more +.BR 'X' +characters at the end of the pathname with the same number of +characters from the portable filename character set. The characters +shall be chosen such that the resulting pathname does not duplicate +the name of an existing file at the time of the call to +\fImkdtemp\fR(). +The +\fImkdtemp\fR() +function shall use the resulting pathname to create the new directory +as if by a call to: +.sp +.RS 4 +.nf + +mkdir(pathname, S_IRWXU) +.fi +.P +.RE +.P +The +\fImkstemp\fR() +function shall create a regular file with a unique name derived from +.IR template +and return a file descriptor for the file open for reading and +writing. The application shall ensure that the string provided in +.IR template +is a pathname ending with at least six trailing +.BR 'X' +characters. The +\fImkstemp\fR() +function shall modify the contents of +.IR template +by replacing six or more +.BR 'X' +characters at the end of the pathname with the same number of +characters from the portable filename character set. The characters +shall be chosen such that the resulting pathname does not duplicate +the name of an existing file at the time of the call to +\fImkstemp\fR(). +The +\fImkstemp\fR() +function shall use the resulting pathname to create the file, and +obtain a file descriptor for it, as if by a call to: +.sp +.RS 4 +.nf + +open(pathname, O_RDWR|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR) +.fi +.P +.RE +.P +By behaving as if the O_EXCL flag for +\fIopen\fR() +is set, the function prevents any possible race condition between +testing whether the file exists and opening it for use. +.SH "RETURN VALUE" +Upon successful completion, the +\fImkdtemp\fR() +function shall return the value of +.IR template . +Otherwise, it shall return a null pointer and shall set +.IR errno +to indicate the error. +.P +Upon successful completion, the +\fImkstemp\fR() +function shall return an open file descriptor. Otherwise, it shall +return \-1 and shall set +.IR errno +to indicate the error. +.SH ERRORS +The +\fImkdtemp\fR() +function shall fail if: +.TP +.BR EACCES +Search permission is denied on a component of the path prefix, or write +permission is denied on the parent directory of the directory to be +created. +.TP +.BR EINVAL +The string pointed to by +.IR template +does not end in +.BR \(dqXXXXXX\(dq . +.TP +.BR ELOOP +A loop exists in symbolic links encountered during resolution of the +path of the directory to be created. +.TP +.BR EMLINK +The link count of the parent directory would exceed +{LINK_MAX}. +.TP +.BR ENAMETOOLONG +.br +The length of a component of a pathname is longer than +{NAME_MAX}. +.TP +.BR ENOENT +A component of the path prefix specified by the +.IR template +argument does not name an existing directory. +.TP +.BR ENOSPC +The file system does not contain enough space to hold the contents of +the new directory or to extend the parent directory of the new +directory. +.TP +.BR ENOTDIR +A component of the path prefix names an existing file that is neither +a directory nor a symbolic link to a directory. +.TP +.BR EROFS +The parent directory resides on a read-only file system. +.P +The +\fImkdtemp\fR() +function may fail if: +.TP +.BR ELOOP +More than +{SYMLOOP_MAX} +symbolic links were encountered during resolution of the path of the +directory to be created. +.TP +.BR ENAMETOOLONG +.br +The length of a pathname exceeds +{PATH_MAX}, +or pathname resolution of a symbolic link produced an intermediate +result with a length that exceeds +{PATH_MAX}. +.P +The error conditions for the +\fImkstemp\fR() +function are defined in +.IR "\fIopen\fR\^(\|)". +.LP +.IR "The following sections are informative." +.SH EXAMPLES +.SS "Generating a Pathname" +.P +The following example creates a file with a 10-character name beginning +with the characters +.BR \(dqfile\(dq +and opens the file for reading and writing. The value returned as the +value of +.IR fd +is a file descriptor that identifies the file. +.sp +.RS 4 +.nf + +#include <stdlib.h> +\&... +char template[] = "/tmp/fileXXXXXX"; +int fd; +.P +fd = mkstemp(template); +.fi +.P +.RE +.SH "APPLICATION USAGE" +It is possible to run out of letters. +.P +Portable applications should pass exactly six trailing +.BR 'X' s +in the template and no more; implementations may treat any additional +trailing +.BR 'X' s +as either a fixed or replaceable part of the template. To be sure of +only passing six, a fixed string of at least one non-\c +.BR 'X' +character should precede the six +.BR 'X' s. +.P +Since +.BR 'X' +is in the portable filename character set, some of the replacement +characters can be +.BR 'X' s, +leaving part (or even all) of the template effectively unchanged. +.SH RATIONALE +None. +.SH "FUTURE DIRECTIONS" +None. +.SH "SEE ALSO" +.IR "\fIgetpid\fR\^(\|)", +.IR "\fImkdir\fR\^(\|)", +.IR "\fIopen\fR\^(\|)", +.IR "\fItmpfile\fR\^(\|)", +.IR "\fItmpnam\fR\^(\|)" +.P +The Base Definitions volume of POSIX.1\(hy2017, +.IR "\fB<stdlib.h>\fP" +.\" +.SH COPYRIGHT +Portions of this text are reprinted and reproduced in electronic form +from IEEE Std 1003.1-2017, Standard for Information Technology +-- Portable Operating System Interface (POSIX), The Open Group Base +Specifications Issue 7, 2018 Edition, +Copyright (C) 2018 by the Institute of +Electrical and Electronics Engineers, Inc and The Open Group. +In the event of any discrepancy between this version and the original IEEE and +The Open Group Standard, the original IEEE and The Open Group Standard +is the referee document. The original Standard can be obtained online at +http://www.opengroup.org/unix/online.html . +.PP +Any typographical or formatting errors that appear +in this page are most likely +to have been introduced during the conversion of the source files to +man page format. To report such errors, see +https://www.kernel.org/doc/man-pages/reporting_bugs.html . |