home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / zip / gnu / mntlib16.lzh / MNTLIB16 / TMPNAM.C < prev    next >
C/C++ Source or Header  |  1993-07-29  |  800b  |  34 lines

  1. /* tmpnam.c : return a temporary file name */
  2. /* written by Eric R. Smith and placed in the public domain */
  3. /**
  4.  *  - retuned name can be passed outside via system(); other programs
  5.  *    may not dig '/' as a path separator
  6.  *  - somehow more frugal in a memory use
  7.  *    (mj - October 1990)
  8.  **/
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include <string.h>
  12.  
  13. static char pattern[] = "\\__XXXXXX";
  14.  
  15. char *tmpnam(buf)
  16.     char *buf;
  17. {
  18.     char *tmpdir;
  19.     extern char *mktemp __PROTO((char *));
  20.  
  21.     if (!(tmpdir = getenv("TEMP")) && !(tmpdir = getenv("TMPDIR")))
  22.         tmpdir = ".";
  23.  
  24.     if (!buf) {
  25.         size_t blen;
  26.         
  27.         blen = strlen (tmpdir) + sizeof(pattern);
  28.         if (NULL == (buf = malloc(blen)))
  29.             return NULL;
  30.     }
  31.     (void) strcat(strcpy(buf, tmpdir), pattern);
  32.     return(mktemp(buf));
  33. }
  34.