#include <stdio.h> | |
#include <fcntl.h> | |
#include <errno.h> | |
#include <sys/stat.h> | |
#include <string.h> | |
#define MAXTRIES 100 | |
char* __randname(char*); | |
char* tmpnam(char* buf) { | |
static char internal[L_tmpnam]; | |
char s[] = "/tmp/tmpnam_XXXXXX"; | |
int try | |
; | |
int r; | |
for (try = 0; try < MAXTRIES; try ++) { | |
__randname(s + 12); | |
r = lstat(s, &(struct stat){0}); | |
if (r == -ENOENT) | |
return strcpy(buf ? buf : internal, s); | |
} | |
return 0; | |
} |