| #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); |