summaryrefslogtreecommitdiffstats
path: root/upstream/archlinux/man3p/mkdtemp.3p
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/archlinux/man3p/mkdtemp.3p')
-rw-r--r--upstream/archlinux/man3p/mkdtemp.3p249
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 .