158f0484fSRodney W. Grimes.\" Copyright (c) 1988, 1991, 1993 258f0484fSRodney W. Grimes.\" The Regents of the University of California. All rights reserved. 358f0484fSRodney W. Grimes.\" 458f0484fSRodney W. Grimes.\" This code is derived from software contributed to Berkeley by 558f0484fSRodney W. Grimes.\" the American National Standards Committee X3, on Information 658f0484fSRodney W. Grimes.\" Processing Systems. 758f0484fSRodney W. Grimes.\" 858f0484fSRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without 958f0484fSRodney W. Grimes.\" modification, are permitted provided that the following conditions 1058f0484fSRodney W. Grimes.\" are met: 1158f0484fSRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright 1258f0484fSRodney W. Grimes.\" notice, this list of conditions and the following disclaimer. 1358f0484fSRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright 1458f0484fSRodney W. Grimes.\" notice, this list of conditions and the following disclaimer in the 1558f0484fSRodney W. Grimes.\" documentation and/or other materials provided with the distribution. 1658f0484fSRodney W. Grimes.\" 3. All advertising materials mentioning features or use of this software 1758f0484fSRodney W. Grimes.\" must display the following acknowledgement: 1858f0484fSRodney W. Grimes.\" This product includes software developed by the University of 1958f0484fSRodney W. Grimes.\" California, Berkeley and its contributors. 2058f0484fSRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors 2158f0484fSRodney W. Grimes.\" may be used to endorse or promote products derived from this software 2258f0484fSRodney W. Grimes.\" without specific prior written permission. 2358f0484fSRodney W. Grimes.\" 2458f0484fSRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2558f0484fSRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2658f0484fSRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2758f0484fSRodney W. Grimes.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2858f0484fSRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2958f0484fSRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 3058f0484fSRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3158f0484fSRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3258f0484fSRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3358f0484fSRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3458f0484fSRodney W. Grimes.\" SUCH DAMAGE. 3558f0484fSRodney W. Grimes.\" 3658f0484fSRodney W. Grimes.\" @(#)tmpnam.3 8.2 (Berkeley) 11/17/93 377f3dea24SPeter Wemm.\" $FreeBSD$ 3858f0484fSRodney W. Grimes.\" 3958f0484fSRodney W. Grimes.Dd November 17, 1993 4058f0484fSRodney W. Grimes.Dt TMPFILE 3 4158f0484fSRodney W. Grimes.Os 4258f0484fSRodney W. Grimes.Sh NAME 4358f0484fSRodney W. Grimes.Nm tempnam , 4458f0484fSRodney W. Grimes.Nm tmpfile , 4558f0484fSRodney W. Grimes.Nm tmpnam 4658f0484fSRodney W. Grimes.Nd temporary file routines 4725bb73e0SAlexey Zelkin.Sh LIBRARY 4825bb73e0SAlexey Zelkin.Lb libc 4958f0484fSRodney W. Grimes.Sh SYNOPSIS 5058f0484fSRodney W. Grimes.Fd #include <stdio.h> 5158f0484fSRodney W. Grimes.Ft FILE * 5258f0484fSRodney W. Grimes.Fn tmpfile void 5358f0484fSRodney W. Grimes.Ft char * 5458f0484fSRodney W. Grimes.Fn tmpnam "char *str" 5558f0484fSRodney W. Grimes.Ft char * 5658f0484fSRodney W. Grimes.Fn tempnam "const char *tmpdir" "const char *prefix" 5758f0484fSRodney W. Grimes.Sh DESCRIPTION 5858f0484fSRodney W. GrimesThe 5958f0484fSRodney W. Grimes.Fn tmpfile 6058f0484fSRodney W. Grimesfunction 6158f0484fSRodney W. Grimesreturns a pointer to a stream associated with a file descriptor returned 6258f0484fSRodney W. Grimesby the routine 6358f0484fSRodney W. Grimes.Xr mkstemp 3 . 6458f0484fSRodney W. GrimesThe created file is unlinked before 6558f0484fSRodney W. Grimes.Fn tmpfile 6658f0484fSRodney W. Grimesreturns, causing the file to be automatically deleted when the last 6758f0484fSRodney W. Grimesreference to it is closed. 6858f0484fSRodney W. GrimesThe file is opened with the access value 6958f0484fSRodney W. Grimes.Ql w+ . 7058f0484fSRodney W. Grimes.Pp 7158f0484fSRodney W. GrimesThe 7258f0484fSRodney W. Grimes.Fn tmpnam 7358f0484fSRodney W. Grimesfunction 7458f0484fSRodney W. Grimesreturns a pointer to a file name, in the 7558f0484fSRodney W. Grimes.Dv P_tmpdir 7658f0484fSRodney W. Grimesdirectory, which 7758f0484fSRodney W. Grimesdid not reference an existing file at some indeterminate point in the 7858f0484fSRodney W. Grimespast. 7958f0484fSRodney W. Grimes.Dv P_tmpdir 8058f0484fSRodney W. Grimesis defined in the include file 8158f0484fSRodney W. Grimes.Aq Pa stdio.h . 8258f0484fSRodney W. GrimesIf the argument 833076db19SKris Kennaway.Fa str 8458f0484fSRodney W. Grimesis 8558f0484fSRodney W. Grimes.Pf non- Dv NULL , 8658f0484fSRodney W. Grimesthe file name is copied to the buffer it references. 8758f0484fSRodney W. GrimesOtherwise, the file name is copied to a static buffer. 8858f0484fSRodney W. GrimesIn either case, 8958f0484fSRodney W. Grimes.Fn tmpnam 9058f0484fSRodney W. Grimesreturns a pointer to the file name. 9158f0484fSRodney W. Grimes.Pp 9258f0484fSRodney W. GrimesThe buffer referenced by 933076db19SKris Kennaway.Fa str 9458f0484fSRodney W. Grimesis expected to be at least 9558f0484fSRodney W. Grimes.Dv L_tmpnam 9658f0484fSRodney W. Grimesbytes in length. 9758f0484fSRodney W. Grimes.Dv L_tmpnam 9858f0484fSRodney W. Grimesis defined in the include file 9958f0484fSRodney W. Grimes.Aq Pa stdio.h . 10058f0484fSRodney W. Grimes.Pp 10158f0484fSRodney W. GrimesThe 10258f0484fSRodney W. Grimes.Fn tempnam 10358f0484fSRodney W. Grimesfunction 10458f0484fSRodney W. Grimesis similar to 10558f0484fSRodney W. Grimes.Fn tmpnam , 10658f0484fSRodney W. Grimesbut provides the ability to specify the directory which will 10758f0484fSRodney W. Grimescontain the temporary file and the file name prefix. 10858f0484fSRodney W. Grimes.Pp 10958f0484fSRodney W. GrimesThe environment variable 11058f0484fSRodney W. Grimes.Ev TMPDIR 11158f0484fSRodney W. Grimes(if set), the argument 11258f0484fSRodney W. Grimes.Fa tmpdir 11358f0484fSRodney W. Grimes(if 11458f0484fSRodney W. Grimes.Pf non- Dv NULL ) , 11558f0484fSRodney W. Grimesthe directory 11658f0484fSRodney W. Grimes.Dv P_tmpdir , 11758f0484fSRodney W. Grimesand the directory 11858f0484fSRodney W. Grimes.Pa /tmp 11958f0484fSRodney W. Grimesare tried, in the listed order, as directories in which to store the 12058f0484fSRodney W. Grimestemporary file. 12158f0484fSRodney W. Grimes.Pp 12258f0484fSRodney W. GrimesThe argument 12358f0484fSRodney W. Grimes.Fa prefix , 12458f0484fSRodney W. Grimesif 12558f0484fSRodney W. Grimes.Pf non- Dv NULL , 12658f0484fSRodney W. Grimesis used to specify a file name prefix, which will be the 12758f0484fSRodney W. Grimesfirst part of the created file name. 12858f0484fSRodney W. Grimes.Fn Tempnam 12958f0484fSRodney W. Grimesallocates memory in which to store the file name; the returned pointer 13058f0484fSRodney W. Grimesmay be used as a subsequent argument to 13158f0484fSRodney W. Grimes.Xr free 3 . 13258f0484fSRodney W. Grimes.Sh RETURN VALUES 13358f0484fSRodney W. GrimesThe 13458f0484fSRodney W. Grimes.Fn tmpfile 13558f0484fSRodney W. Grimesfunction 13658f0484fSRodney W. Grimesreturns a pointer to an open file stream on success, and a 13758f0484fSRodney W. Grimes.Dv NULL 13858f0484fSRodney W. Grimespointer 13958f0484fSRodney W. Grimeson error. 14058f0484fSRodney W. Grimes.Pp 14158f0484fSRodney W. GrimesThe 14258f0484fSRodney W. Grimes.Fn tmpnam 14358f0484fSRodney W. Grimesand 14458f0484fSRodney W. Grimes.Fn tempfile 14558f0484fSRodney W. Grimesfunctions 14658f0484fSRodney W. Grimesreturn a pointer to a file name on success, and a 14758f0484fSRodney W. Grimes.Dv NULL 14858f0484fSRodney W. Grimespointer 14958f0484fSRodney W. Grimeson error. 15058f0484fSRodney W. Grimes.Sh ERRORS 15158f0484fSRodney W. GrimesThe 15258f0484fSRodney W. Grimes.Fn tmpfile 15358f0484fSRodney W. Grimesfunction 15458f0484fSRodney W. Grimesmay fail and set the global variable 15558f0484fSRodney W. Grimes.Va errno 15658f0484fSRodney W. Grimesfor any of the errors specified for the library functions 15758f0484fSRodney W. Grimes.Xr fdopen 3 15858f0484fSRodney W. Grimesor 15958f0484fSRodney W. Grimes.Xr mkstemp 3 . 16058f0484fSRodney W. Grimes.Pp 16158f0484fSRodney W. GrimesThe 16258f0484fSRodney W. Grimes.Fn tmpnam 16358f0484fSRodney W. Grimesfunction 16458f0484fSRodney W. Grimesmay fail and set 16558f0484fSRodney W. Grimes.Va errno 16658f0484fSRodney W. Grimesfor any of the errors specified for the library function 16758f0484fSRodney W. Grimes.Xr mktemp 3 . 16858f0484fSRodney W. Grimes.Pp 16958f0484fSRodney W. GrimesThe 17058f0484fSRodney W. Grimes.Fn tempnam 17158f0484fSRodney W. Grimesfunction 17258f0484fSRodney W. Grimesmay fail and set 17358f0484fSRodney W. Grimes.Va errno 17458f0484fSRodney W. Grimesfor any of the errors specified for the library functions 17558f0484fSRodney W. Grimes.Xr malloc 3 17658f0484fSRodney W. Grimesor 17758f0484fSRodney W. Grimes.Xr mktemp 3 . 17858f0484fSRodney W. Grimes.Sh SEE ALSO 17958f0484fSRodney W. Grimes.Xr mkstemp 3 , 18058f0484fSRodney W. Grimes.Xr mktemp 3 18158f0484fSRodney W. Grimes.Sh STANDARDS 18258f0484fSRodney W. GrimesThe 18358f0484fSRodney W. Grimes.Fn tmpfile 18458f0484fSRodney W. Grimesand 18558f0484fSRodney W. Grimes.Fn tmpnam 18658f0484fSRodney W. Grimesfunctions 18758f0484fSRodney W. Grimesconform to 18858f0484fSRodney W. Grimes.St -ansiC . 18958f0484fSRodney W. Grimes.Sh BUGS 19058f0484fSRodney W. GrimesThese interfaces are provided for System V and 19158f0484fSRodney W. Grimes.Tn ANSI 19258f0484fSRodney W. Grimescompatibility only. 19358f0484fSRodney W. GrimesThe 19458f0484fSRodney W. Grimes.Xr mkstemp 3 19558f0484fSRodney W. Grimesinterface is strongly preferred. 19658f0484fSRodney W. Grimes.Pp 19758f0484fSRodney W. GrimesThere are four important problems with these interfaces (as well as 19858f0484fSRodney W. Grimeswith the historic 19958f0484fSRodney W. Grimes.Xr mktemp 3 20058f0484fSRodney W. Grimesinterface). 20158f0484fSRodney W. GrimesFirst, there is an obvious race between file name selection and file 20258f0484fSRodney W. Grimescreation and deletion. 20358f0484fSRodney W. GrimesSecond, most historic implementations provide only a limited number 20458f0484fSRodney W. Grimesof possible temporary file names (usually 26) before file names will 20558f0484fSRodney W. Grimesstart being recycled. 20658f0484fSRodney W. GrimesThird, the System V implementations of these functions (and of 207064f0074SMike Pritchard.Xr mktemp 3 ) 20858f0484fSRodney W. Grimesuse the 20958f0484fSRodney W. Grimes.Xr access 2 21058f0484fSRodney W. Grimesfunction to determine whether or not the temporary file may be created. 21158f0484fSRodney W. GrimesThis has obvious ramifications for setuid or setgid programs, complicating 21258f0484fSRodney W. Grimesthe portable use of these interfaces in such programs. 21358f0484fSRodney W. GrimesFinally, there is no specification of the permissions with which the 21458f0484fSRodney W. Grimestemporary files are created. 21558f0484fSRodney W. Grimes.Pp 21658f0484fSRodney W. GrimesThis implementation does not have these flaws, but portable software 21758f0484fSRodney W. Grimescannot depend on that. 21858f0484fSRodney W. GrimesIn particular, the 21958f0484fSRodney W. Grimes.Fn tmpfile 22058f0484fSRodney W. Grimesinterface should not be used in software expected to be used on other systems 22158f0484fSRodney W. Grimesif there is any possibility that the user does not wish the temporary file to 22258f0484fSRodney W. Grimesbe publicly readable and writable. 223