Provided by: manpages-dev_2.62-1_all bug
 

NAME

        tmpnam, tmpnam_r - create a name for a temporary file
 

SYNOPSIS

        #include <stdio.h>
 
        char *tmpnam(char *s);
 

DESCRIPTION

        The  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 s is NULL this name is generated
        in an internal static buffer and may be overwritten by the next call to
        tmpnam().  If s is not NULL, the name is copied to the character  array
        (of  length  at  least  L_tmpnam)  pointed  to  by s and the value s is
        returned in case of success.
 
        The pathname that is created, has a directory prefix  P_tmpdir.   (Both
        L_tmpnam  and  P_tmpdir are defined in <stdio.h>, just like the TMP_MAX
        mentioned below.)
        The tmpnam() function returns a pointer to a unique temporary filename,
        or NULL if a unique name cannot be generated.
 

ERRORS

        No errors are defined.
        SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
 

NOTES

        The  tmpnam()  function  generates  a  different string each time it is
        called, up to TMP_MAX times.  If it is called more than TMP_MAX  times,
        the behavior is implementation defined.
 
        Although  tmpnam(3)  generates names that are difficult to guess, it is
        nevertheless possible that between the time that  tmpnam(3)  returns  a
        pathname, and the time that the program opens it, another program might
        create that pathname using open(2), or create it as  a  symbolic  link.
        This  can lead to security holes.  To avoid such possibilities, use the
        open(2)  O_EXCL  flag  to  open  the  pathname.   Or  better  yet,  use
        mkstemp(3) or tmpfile(3).
 
        Portable  applications  that use threads cannot call tmpnam() with NULL
        parameter if either _POSIX_THREADS or  _POSIX_THREAD_SAFE_FUNCTIONS  is
        defined.
 
        A POSIX draft proposed to use a function tmpnam_r() defined by
 
             char *
             tmpnam_r(char *s)
             {
                 return s ? tmpnam(s) : NULL;
             }
 
        apparently  as  a warning not to use NULL.  A few systems implement it.
        To get a glibc prototype for  this  function,  define  _SVID_SOURCE  or
        _BSD_SOURCE before including <stdio.h>.
 

BUGS

        Never use this function.  Use mkstemp(3) or tmpfile(3) instead.
        mkstemp(3), mktemp(3), tempnam(3), tmpfile(3)
 
                                   2003-11-15                         TMPNAM(3)