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