1278332Semaste#include <fcntl.h> 2278332Semaste#include <stdio.h> 3278332Semaste#include <unistd.h> 4278332Semaste 5278332Semaste#include "stdio_impl.h" 6278332Semaste 7278332Semaste#define MAXTRIES 100 8278332Semaste 9278332Semastechar* __randname(char*); 10278332Semaste 11278332SemasteFILE* tmpfile(void) { 12278332Semaste char s[] = "/tmp/tmpfile_XXXXXX"; 13278332Semaste int fd; 14278332Semaste FILE* f; 15278332Semaste int try 16278332Semaste ; 17278332Semaste for (try = 0; try < MAXTRIES; try ++) { 18278332Semaste __randname(s + 13); 19278332Semaste fd = open(s, O_RDWR | O_CREAT | O_EXCL, 0600); 20278332Semaste if (fd >= 0) { 21278332Semaste unlink(s); 22278332Semaste f = __fdopen(fd, "w+"); 23278332Semaste if (!f) 24278332Semaste close(fd); 25278332Semaste return f; 26278332Semaste } 27278332Semaste } 28278332Semaste return 0; 29278332Semaste} 30278332Semaste