master
 1#include <stdio.h>
 2#include <fcntl.h>
 3#include <stdlib.h>
 4#include "stdio_impl.h"
 5
 6#define MAXTRIES 100
 7
 8FILE *tmpfile(void)
 9{
10	char s[] = "/tmp/tmpfile_XXXXXX";
11	int fd;
12	FILE *f;
13	int try;
14	for (try=0; try<MAXTRIES; try++) {
15		__randname(s+13);
16		fd = sys_open(s, O_RDWR|O_CREAT|O_EXCL, 0600);
17		if (fd >= 0) {
18#ifdef SYS_unlink
19			__syscall(SYS_unlink, s);
20#else
21			__syscall(SYS_unlinkat, AT_FDCWD, s, 0);
22#endif
23			f = __fdopen(fd, "w+");
24			if (!f) __syscall(SYS_close, fd);
25			return f;
26		}
27	}
28	return 0;
29}