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)11char* 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