summaryrefslogtreecommitdiffstats
path: root/man3/mktemp.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/mktemp.3')
-rw-r--r--man3/mktemp.382
1 files changed, 82 insertions, 0 deletions
diff --git a/man3/mktemp.3 b/man3/mktemp.3
new file mode 100644
index 000000000..4f04ba1dc
--- /dev/null
+++ b/man3/mktemp.3
@@ -0,0 +1,82 @@
+.\" Copyright (C) 1993 David Metcalfe (david@prism.demon.co.uk)
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of this
+.\" manual under the conditions for verbatim copying, provided that the
+.\" entire resulting derived work is distributed under the terms of a
+.\" permission notice identical to this one.
+.\"
+.\" Since the Linux kernel and libraries are constantly changing, this
+.\" manual page may be incorrect or out-of-date. The author(s) assume no
+.\" responsibility for errors or omissions, or for damages resulting from
+.\" the use of the information contained herein. The author(s) may not
+.\" have taken the same level of care in the production of this manual,
+.\" which is licensed free of charge, as they might when working
+.\" professionally.
+.\"
+.\" Formatted or processed versions of this manual, if unaccompanied by
+.\" the source, must acknowledge the copyright and authors of this work.
+.\"
+.\" References consulted:
+.\" Linux libc source code
+.\" Lewine's _POSIX Programmer's Guide_ (O'Reilly & Associates, 1991)
+.\" 386BSD man pages
+.\" Modified Sat Jul 24 18:48:06 1993 by Rik Faith (faith@cs.unc.edu)
+.\" Modified Fri Jun 23 01:26:34 1995 by Andries Brouwer (aeb@cwi.nl)
+.\" (prompted by Scott Burkett <scottb@IntNet.net>)
+.\" Modified Sun Mar 28 23:44:38 1999 by Andries Brouwer (aeb@cwi.nl)
+.\"
+.TH MKTEMP 3 1993-04-03 "GNU" "Linux Programmer's Manual"
+.SH NAME
+mktemp \- make a unique temporary file name
+.SH SYNOPSIS
+.nf
+.B #include <stdlib.h>
+.sp
+.BI "char *mktemp(char *" template );
+.fi
+.SH DESCRIPTION
+The \fBmktemp()\fP function generates a unique temporary file name
+from \fItemplate\fP. The last six characters of \fItemplate\fP must
+be XXXXXX and these are replaced with a string that makes the
+filename unique. Since it will be modified,
+.I template
+must not be a string constant, but should be declared as a character array.
+.SH "RETURN VALUE"
+The \fBmktemp()\fP function returns NULL on error (\fItemplate\fP did not
+end in XXXXXX) and \fItemplate\fP otherwise.
+If the call was successful, the last six bytes of \fItemplate\fP will
+have been modified in such a way that the resulting name is unique
+(does not exist already). If the call was unsuccessful, \fItemplate\fP
+is made an empty string.
+
+.SH ERRORS
+.TP
+.B EINVAL
+The last six characters of \fItemplate\fP were not XXXXXX.
+.SH "CONFORMING TO"
+BSD 4.3. POSIX dictates
+.BR tmpnam (3).
+.SH NOTE
+The prototype is in
+.I <unistd.h>
+for libc4, libc5, glibc1; glibc2 follows the Single Unix Specification
+and has the prototype in
+.IR <stdlib.h> .
+.SH BUGS
+Never use \fBmktemp()\fP. Some implementations follow BSD 4.3
+and replace XXXXXX by the current process id and a single letter,
+so that at most 26 different names can be returned.
+Since on the one hand the names are easy to guess, and on the other
+hand there is a race between testing whether the name exists and
+opening the file, every use of \fBmktemp()\fP is a security risk.
+The race is avoided by
+.BR mkstemp (3).
+.SH "SEE ALSO"
+.BR mkstemp (3),
+.BR tempnam (3),
+.BR tmpfile (3),
+.BR tmpnam (3)