home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gawk-2.15.6-src.tgz / tar.out / fsf / gawk / atari / tmpnam.c < prev   
C/C++ Source or Header  |  1996-09-28  |  1KB  |  46 lines

  1. /* tmpnam.c : return a temporary file name */
  2. /* written by Eric R. Smith and placed in the public domain */
  3. /**
  4.  *  - modified for gawk needs - pattern /$$XXXXXX from the original
  5.  *    code creates names which are hard to remove when somethig
  6.  *    goes wrong
  7.  *  - retuned name can be passed outside via system(); other programs
  8.  *    may not dig '/' as a path separator
  9.  *  - somehow more frugal in a memory use
  10.  *    (mj - October 1990)
  11.  **/
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15.  
  16. extern char *    getenv(const char *);
  17. extern char *    mktemp(char *);
  18. char *          tempnam(const char *path, const char *base);
  19. static char pattern[] = "\\gwkXXXXX";
  20.  
  21. char *tmpnam(buf)
  22.     char *buf;
  23. {
  24.     char *tmpdir;
  25.  
  26.     if (!(tmpdir = getenv("TEMP")) && !(tmpdir = getenv("TMPDIR")))
  27.         tmpdir = ".";
  28.  
  29.     if (!buf) {
  30.         size_t blen;
  31.         
  32.         blen = strlen (tmpdir) + sizeof(pattern);
  33.         if (NULL == (buf = malloc(blen)))
  34.             return NULL;
  35.     }
  36.     (void) strcat(strcpy(buf, tmpdir), pattern);
  37.     return(mktemp(buf));
  38. }
  39.  
  40. /* used by gawk_popen() */
  41. char *tempnam(path, base)
  42. const char *path, *base;    /* ignored */
  43. {
  44.     return tmpnam(NULL);
  45. }
  46.