#include <stdio.h> | |
#include <fcntl.h> | |
#include <unistd.h> | |
#include "stdio_impl.h" | |
#define MAXTRIES 100 | |
FILE *tmpfile(void) | |
{ | |
char buf[L_tmpnam], *s; | |
int fd; | |
FILE *f; | |
int try; | |
for (try=0; try<MAXTRIES; try++) { | |
s = tmpnam(buf); | |
if (!s) return 0; | |
fd = syscall(SYS_open, s, O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600); | |
if (fd >= 0) { | |
f = __fdopen(fd, "w+"); | |
__syscall(SYS_unlink, s); | |
return f; | |
} | |
} | |
return 0; | |
} | |
LFS64(tmpfile); |