summaryrefslogtreecommitdiffstats
path: root/man-pages-posix-2013/man3p/mkdtemp.3p
diff options
context:
space:
mode:
Diffstat (limited to 'man-pages-posix-2013/man3p/mkdtemp.3p')
-rw-r--r--man-pages-posix-2013/man3p/mkdtemp.3p215
1 files changed, 215 insertions, 0 deletions
diff --git a/man-pages-posix-2013/man3p/mkdtemp.3p b/man-pages-posix-2013/man3p/mkdtemp.3p
new file mode 100644
index 0000000..0a6b2bd
--- /dev/null
+++ b/man-pages-posix-2013/man3p/mkdtemp.3p
@@ -0,0 +1,215 @@
+'\" et
+.TH MKDTEMP "3P" 2013 "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 uses the contents of
+.IR template
+to construct a unique directory name. The string provided in
+.IR template
+shall be a pathname ending with six trailing
+.BR 'X' s.
+The
+\fImkdtemp\fR()
+function shall replace each
+.BR 'X'
+with a character from the portable filename character set. The
+characters are chosen such that the resulting name does not duplicate
+the name of an existing file at the time of a call to
+\fImkdtemp\fR().
+The unique directory name is used to attempt to create the directory
+using mode 0700 as modified by the file creation mask.
+.P
+The
+\fImkstemp\fR()
+function shall replace the contents of the string pointed to by
+.IR template
+by a unique pathname, and return a file descriptor for the file open
+for reading and writing. The
+\fImkstemp\fR()
+function shall create the file, and obtain a file descriptor for it,
+as if by a call to:
+.sp
+.RS 4
+.nf
+\fB
+open(pathname, O_RDWR|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR)
+.fi \fR
+.P
+.RE
+.P
+The function thus prevents any possible race condition between testing
+whether the file exists and opening it for use. The string in
+.IR template
+should look like a pathname with six trailing
+.BR 'X' s;
+\fImkstemp\fR()
+replaces each
+.BR 'X'
+with a character from the portable filename character set. The
+characters are chosen such that the resulting name does not duplicate
+the name of an existing file at the time of a call to
+\fImkstemp\fR().
+.SH "RETURN VALUE"
+Upon successful completion, the
+\fImkdtemp\fR()
+function shall return a pointer to the string containing the directory
+name if it was created. 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 \(mi1 if no suitable file could be created.
+.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
+\fB
+#include <stdlib.h>
+\&...
+char template[] = "/tmp/fileXXXXXX";
+int fd;
+.P
+fd = mkstemp(template);
+.fi \fR
+.P
+.RE
+.SH "APPLICATION USAGE"
+It is possible to run out of letters.
+.P
+The
+\fImkdtemp\fR()
+and
+\fImkstemp\fR()
+functions need not check to determine whether the filename part of
+.IR template
+exceeds the maximum allowable filename length.
+.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\(hy2008,
+.IR "\fB<stdlib.h>\fP"
+.SH COPYRIGHT
+Portions of this text are reprinted and reproduced in electronic form
+from IEEE Std 1003.1, 2013 Edition, Standard for Information Technology
+-- Portable Operating System Interface (POSIX), The Open Group Base
+Specifications Issue 7, Copyright (C) 2013 by the Institute of
+Electrical and Electronics Engineers, Inc and The Open Group.
+(This is POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.) 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.unix.org/online.html .
+
+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 .