|
|
1.1 ! root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.