Loading...
#include <stdio.h> #include <fcntl.h> #include "stdio_impl.h" #define MAXTRIES 100 char *__randname(char *); FILE *tmpfile(void) { char s[] = "/tmp/tmpfile_XXXXXX"; int fd; FILE *f; int try; for (try=0; try<MAXTRIES; try++) { __randname(s+13); fd = sys_open(s, O_RDWR|O_CREAT|O_EXCL, 0600); if (fd >= 0) { #ifdef SYS_unlink __syscall(SYS_unlink, s); #else __syscall(SYS_unlinkat, AT_FDCWD, s, 0); #endif f = __fdopen(fd, "w+"); if (!f) __syscall(SYS_close, fd); return f; } } return 0; } LFS64(tmpfile); |