summaryrefslogtreecommitdiffstats
path: root/man/man3/tmpnam.3
diff options
context:
space:
mode:
Diffstat (limited to 'man/man3/tmpnam.3')
-rw-r--r--man/man3/tmpnam.3168
1 files changed, 168 insertions, 0 deletions
diff --git a/man/man3/tmpnam.3 b/man/man3/tmpnam.3
new file mode 100644
index 0000000..25161d6
--- /dev/null
+++ b/man/man3/tmpnam.3
@@ -0,0 +1,168 @@
+'\" t
+.\" Copyright (c) 1999 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.\" 2003-11-15, aeb, added tmpnam_r
+.\"
+.TH tmpnam 3 2024-05-02 "Linux man-pages (unreleased)"
+.SH NAME
+tmpnam, tmpnam_r \- create a name for a temporary file
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <stdio.h>
+.P
+.BI "[[deprecated]] char *tmpnam(char *" s );
+.BI "[[deprecated]] char *tmpnam_r(char *" s );
+.fi
+.P
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.P
+.BR tmpnam_r ()
+.nf
+ Since glibc 2.19:
+ _DEFAULT_SOURCE
+ Up to and including glibc 2.19:
+ _BSD_SOURCE || _SVID_SOURCE
+.fi
+.SH DESCRIPTION
+.B Note:
+avoid using these functions; use
+.BR mkstemp (3)
+or
+.BR tmpfile (3)
+instead.
+.P
+The
+.BR tmpnam ()
+function returns a pointer to a string that is a valid filename,
+and such that a file with this name did not exist at some point
+in time, so that naive programmers may think it
+a suitable name for a temporary file.
+If the argument
+.I s
+is NULL, this name is generated in an internal static buffer
+and may be overwritten by the next call to
+.BR tmpnam ().
+If
+.I s
+is not NULL, the name is copied to the character array (of length
+at least
+.IR L_tmpnam )
+pointed to by
+.I s
+and the value
+.I s
+is returned in case of success.
+.P
+The created pathname has a directory prefix
+.IR P_tmpdir .
+(Both
+.I L_tmpnam
+and
+.I P_tmpdir
+are defined in
+.IR <stdio.h> ,
+just like the
+.B TMP_MAX
+mentioned below.)
+.P
+The
+.BR tmpnam_r ()
+function performs the same task as
+.BR tmpnam (),
+but returns NULL (to indicate an error) if
+.I s
+is NULL.
+.SH RETURN VALUE
+These functions return a pointer to a unique temporary
+filename, or NULL if a unique name cannot be generated.
+.SH ERRORS
+No errors are defined.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR tmpnam ()
+T} Thread safety MT-Unsafe race:tmpnam/!s
+T{
+.na
+.nh
+.BR tmpnam_r ()
+T} Thread safety MT-Safe
+.TE
+.SH STANDARDS
+.TP
+.BR tmpnam ()
+C11, POSIX.1-2008.
+.TP
+.BR tmpnam_r ()
+None.
+.SH HISTORY
+.TP
+.BR tmpnam ()
+SVr4, 4.3BSD, C89, POSIX.1-2001.
+Obsolete in POSIX.1-2008.
+.TP
+.BR tmpnam_r ()
+Solaris.
+.SH NOTES
+The
+.BR tmpnam ()
+function generates a different string each time it is called,
+up to
+.B TMP_MAX
+times.
+If it is called more than
+.B TMP_MAX
+times,
+the behavior is implementation defined.
+.P
+Although these functions generate names that are difficult to guess,
+it is nevertheless possible that between the time that
+the pathname is returned and the time that the program opens it,
+another program might create that pathname using
+.BR open (2),
+or create it as a symbolic link.
+This can lead to security holes.
+To avoid such possibilities, use the
+.BR open (2)
+.B O_EXCL
+flag to open the pathname.
+Or better yet, use
+.BR mkstemp (3)
+or
+.BR tmpfile (3).
+.P
+Portable applications that use threads cannot call
+.BR tmpnam ()
+with a NULL argument if either
+.B _POSIX_THREADS
+or
+.B _POSIX_THREAD_SAFE_FUNCTIONS
+is defined.
+.SH BUGS
+Never use these functions.
+Use
+.BR mkstemp (3)
+or
+.BR tmpfile (3)
+instead.
+.SH SEE ALSO
+.BR mkstemp (3),
+.BR mktemp (3),
+.BR tempnam (3),
+.BR tmpfile (3)