xref: /minix3/lib/libc/stdio/tmpfile.c (revision b706112487045bc1efd01e3d4d53d9a6b04a0bca)
1 /*
2  * tmpfile.c - create and open a temporary file
3  */
4 /* $Header$ */
5 
6 #if	defined(_POSIX_SOURCE)
7 #include	<sys/types.h>
8 #endif
9 #include	<stdio.h>
10 #include	<string.h>
11 #include	"loc_incl.h"
12 
13 pid_t _getpid(void);
14 
15 FILE *
16 tmpfile(void) {
17 	static char name_buffer[L_tmpnam] = "/tmp/tmp." ;
18 	static char *name = NULL;
19 	FILE *file;
20 
21 	if (!name) {
22 		name = name_buffer + strlen(name_buffer);
23 		name = _i_compute(_getpid(), 10, name, 5);
24 		*name = '\0';
25 	}
26 
27 	file = fopen(name_buffer,"wb+");
28 	if (!file) return (FILE *)NULL;
29 	(void) remove(name_buffer);
30 	return file;
31 }
32