1 #include <errno.h>
2 #include <fcntl.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include <sys/stat.h>
6 
7 #define MAXTRIES 100
8 
9 char* __randname(char*);
10 
tmpnam(char * buf)11 char* tmpnam(char* buf) {
12     static char internal[L_tmpnam];
13     char s[] = "/tmp/tmpnam_XXXXXX";
14     int try
15         ;
16     int r;
17     for (try = 0; try < MAXTRIES; try ++) {
18         __randname(s + 12);
19         r = lstat(s, &(struct stat){});
20         if (r == 0)
21             return strcpy(buf ? buf : internal, s);
22     }
23     return 0;
24 }
25