(root)/
glibc-2.38/
stdio-common/
tempnam.c
       1  /* Copyright (C) 1991-2023 Free Software Foundation, Inc.
       2     This file is part of the GNU C Library.
       3  
       4     The GNU C Library is free software; you can redistribute it and/or
       5     modify it under the terms of the GNU Lesser General Public
       6     License as published by the Free Software Foundation; either
       7     version 2.1 of the License, or (at your option) any later version.
       8  
       9     The GNU C Library is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12     Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public
      15     License along with the GNU C Library; if not, see
      16     <https://www.gnu.org/licenses/>.  */
      17  
      18  #include <stdio.h>
      19  #include <string.h>
      20  
      21  /* Generate a unique temporary filename using up to five characters of
      22     PFX if it is not NULL.  The directory to put this file in is
      23     searched for as follows: First the environment variable "TMPDIR" is
      24     checked.  If it contains the name of a directory, that directory is
      25     used.  If not and if DIR is not NULL, that value is checked.  If
      26     that fails, P_tmpdir is tried and finally "/tmp".  The storage for
      27     the filename is allocated by `malloc'.  */
      28  char *
      29  tempnam (const char *dir, const char *pfx)
      30  {
      31    char buf[FILENAME_MAX];
      32  
      33    if (__path_search (buf, FILENAME_MAX, dir, pfx, 1))
      34      return NULL;
      35  
      36    if (__gen_tempname (buf, 0, 0, __GT_NOCREATE))
      37      return NULL;
      38  
      39    return __strdup (buf);
      40  }
      41  
      42  link_warning (tempnam,
      43  	      "the use of `tempnam' is dangerous, better use `mkstemp'")