1#include <stdio.h> 2#include <fcntl.h> 3#include "stdio_impl.h" 4 5#define MAXTRIES 100 6 7char *__randname(char *); 8 9FILE *tmpfile(void) 10{ 11 char s[] = "/tmp/tmpfile_XXXXXX"; 12 int fd; 13 FILE *f; 14 int try; 15 for (try=0; try<MAXTRIES; try++) { 16 __randname(s+13); 17 fd = sys_open(s, O_RDWR|O_CREAT|O_EXCL, 0600); 18 if (fd >= 0) { 19#ifdef SYS_unlink 20 __syscall(SYS_unlink, s); 21#else 22 __syscall(SYS_unlinkat, AT_FDCWD, s, 0); 23#endif 24 f = __fdopen(fd, "w+"); 25 if (!f) __syscall(SYS_close, fd); 26 return f; 27 } 28 } 29 return 0; 30} 31 32LFS64(tmpfile); 33