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
9char* __randname(char*);
10
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