aboutsummaryrefslogtreecommitdiffstats
path: root/man/man3/tempnam.3
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2024-04-26 15:06:49 +0200
committerAlejandro Colomar <alx@kernel.org>2024-05-02 01:24:19 +0200
commitdcde2f70372b49ec43efc5db864c9ff585d0a2dd (patch)
tree78b9b7425130e4a5858e4c01a524d802423879ed /man/man3/tempnam.3
parent12aca537ce78a41bbcdaf485209691e10f8002d7 (diff)
downloadman-pages-dcde2f70372b49ec43efc5db864c9ff585d0a2dd.tar.gz
man/, share/mk/: Move man*/ to man/
This is a scripted change: $ mkdir man/; $ mv man* man/; $ ln -st . man/man*; $ find share/mk/ -type f \ | xargs grep -l '^MANDIR *:=' \ | xargs sed -i '/^MANDIR *:=/s,$,/man,'; $ find share/mk/dist/ -type f \ | xargs grep -l man \ | xargs sed -i 's,man%,man/%,g'; Link: <https://lore.kernel.org/linux-man/YxcV4h+Xn7cd6+q2@pevik/T/> Cc: Petr Vorel <pvorel@suse.cz> Cc: Jakub Wilk <jwilk@jwilk.net> Cc: Stefan Puiu <stefan.puiu@gmail.com> Signed-off-by: Alejandro Colomar <alx@kernel.org>
Diffstat (limited to 'man/man3/tempnam.3')
-rw-r--r--man/man3/tempnam.3175
1 files changed, 175 insertions, 0 deletions
diff --git a/man/man3/tempnam.3 b/man/man3/tempnam.3
new file mode 100644
index 0000000000..f9821896ba
--- /dev/null
+++ b/man/man3/tempnam.3
@@ -0,0 +1,175 @@
+'\" t
+.\" Copyright (c) 1999 Andries Brouwer (aeb@cwi.nl)
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH tempnam 3 (date) "Linux man-pages (unreleased)"
+.SH NAME
+tempnam \- create a name for a temporary file
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <stdio.h>
+.P
+.BI "char *tempnam(const char *" dir ", const char *" pfx );
+.fi
+.P
+.RS -4
+Feature Test Macro Requirements for glibc (see
+.BR feature_test_macros (7)):
+.RE
+.P
+.BR tempnam ():
+.nf
+ Since glibc 2.19:
+ _DEFAULT_SOURCE
+ glibc 2.19 and earlier:
+ _BSD_SOURCE || _SVID_SOURCE
+.fi
+.SH DESCRIPTION
+.I "Never use this function."
+Use
+.BR mkstemp (3)
+or
+.BR tmpfile (3)
+instead.
+.P
+The
+.BR tempnam ()
+function returns a pointer to a string that is a valid filename,
+and such that a file with this name did not exist when
+.BR tempnam ()
+checked.
+The filename suffix of the pathname generated will start with
+.I pfx
+in case
+.I pfx
+is a non-NULL string of at most five bytes.
+The directory prefix part of the pathname generated is required to
+be "appropriate" (often that at least implies writable).
+.P
+Attempts to find an appropriate directory go through the following
+steps:
+.TP 3
+a)
+In case the environment variable
+.B TMPDIR
+exists and
+contains the name of an appropriate directory, that is used.
+.TP
+b)
+Otherwise, if the
+.I dir
+argument is non-NULL and appropriate, it is used.
+.TP
+c)
+Otherwise,
+.I P_tmpdir
+(as defined in
+.IR <stdio.h> )
+is used when appropriate.
+.TP
+d)
+Finally an implementation-defined directory may be used.
+.P
+The string returned by
+.BR tempnam ()
+is allocated using
+.BR malloc (3)
+and hence should be freed by
+.BR free (3).
+.SH RETURN VALUE
+On success, the
+.BR tempnam ()
+function returns a pointer to a unique temporary filename.
+It returns NULL if a unique name cannot be generated, with
+.I errno
+set to indicate the error.
+.SH ERRORS
+.TP
+.B ENOMEM
+Allocation of storage failed.
+.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 tempnam ()
+T} Thread safety MT-Safe env
+.TE
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+SVr4, 4.3BSD, POSIX.1-2001.
+Obsoleted in POSIX.1-2008.
+.SH NOTES
+Although
+.BR tempnam ()
+generates names that are difficult to guess,
+it is nevertheless possible that between the time that
+.BR tempnam ()
+returns a pathname, 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
+SUSv2 does not mention the use of
+.BR TMPDIR ;
+glibc will use it only
+when the program is not set-user-ID.
+On SVr4, the directory used under \fBd)\fP is
+.I /tmp
+(and this is what glibc does).
+.P
+Because it dynamically allocates memory used to return the pathname,
+.BR tempnam ()
+is reentrant, and thus thread safe, unlike
+.BR tmpnam (3).
+.P
+The
+.BR tempnam ()
+function generates a different string each time it is called,
+up to
+.B TMP_MAX
+(defined in
+.IR <stdio.h> )
+times.
+If it is called more than
+.B TMP_MAX
+times,
+the behavior is implementation defined.
+.P
+.BR tempnam ()
+uses at most the first five bytes from
+.IR pfx .
+.P
+The glibc implementation of
+.BR tempnam ()
+fails with the error
+.B EEXIST
+upon failure to find a unique name.
+.SH BUGS
+The precise meaning of "appropriate" is undefined;
+it is unspecified how accessibility of a directory is determined.
+.SH SEE ALSO
+.BR mkstemp (3),
+.BR mktemp (3),
+.BR tmpfile (3),
+.BR tmpnam (3)