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