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