home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / libg++-2.7.1-src.tgz / tar.out / fsf / libg++ / libiberty / tmpnam.c < prev    next >
C/C++ Source or Header  |  1996-09-28  |  619b  |  40 lines

  1. #include <stdio.h>
  2.  
  3. #ifndef L_tmpnam
  4. #define L_tmpname 100
  5. #endif
  6. #ifndef P_tmpdir
  7. #define P_tmpdir "/usr/tmp"
  8. #endif
  9.  
  10. static char tmpnam_buffer[L_tmpnam];
  11. static int tmpnam_counter;
  12.  
  13. extern int getpid ();
  14.  
  15. char *
  16. tmpnam (s)
  17.      char *s;
  18. {
  19.   int pid = getpid ();
  20.  
  21.   if (s == NULL)
  22.     s = tmpnam_buffer;
  23.  
  24.   /*  Generate the filename and make sure that there isn't one called
  25.       it already.  */
  26.  
  27.   while (1)
  28.     {
  29.       FILE *f;
  30.       sprintf (s, "%s/%s%x.%x", P_tmpdir, "t", pid, tmpnam_counter);
  31.       f = fopen (s, "r");
  32.       if (f == NULL)
  33.     break;
  34.       tmpnam_counter++;
  35.       fclose (f);
  36.     }
  37.  
  38.   return s;
  39. }
  40.