Declare malloc, free, and atexit if inhibit_libc is defined.
[official-gcc.git] / libiberty / tmpnam.c
blob8eb77e28c0be3927a889eda972df6390bdfe9cca
1 #include <stdio.h>
3 #ifndef L_tmpnam
4 #define L_tmpnam 100
5 #endif
6 #ifndef P_tmpdir
7 #define P_tmpdir "/usr/tmp"
8 #endif
10 static char tmpnam_buffer[L_tmpnam];
11 static int tmpnam_counter;
13 extern int getpid ();
15 char *
16 tmpnam (s)
17 char *s;
19 int pid = getpid ();
21 if (s == NULL)
22 s = tmpnam_buffer;
24 /* Generate the filename and make sure that there isn't one called
25 it already. */
27 while (1)
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);
38 return s;