Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <stdlib.h>
2
#include <unistd.h>
3
#include <string.h>
4
#include "sys9.h"
5
#undef OPEN
6
#include "../stdio/iolib.h"
7
#include "lib.h"
8
#include "dir.h"
9
 
10
FILE *
11
tmpfile(void){
12
	FILE *f;
13
	static char name[]="/tmp/tf0000000000000";
14
	char *p;
15
	int n;
16
	for(f=_IO_stream;f!=&_IO_stream[FOPEN_MAX];f++)
17
		if(f->state==CLOSED)
18
			break;
19
	if(f==&_IO_stream[FOPEN_MAX])
20
		return NULL;
21
	while(access(name, 0) >= 0){
22
		p = name+7;
23
		while(*p == '9')
24
			*p++ = '0';
25
		if(*p == '\0')
26
			return NULL;
27
		++*p;
28
	}
29
	n = _CREATE(name, 64|2, 0777); /* remove-on-close */
30
	if(n==-1){
31
		_syserrno();
32
		return NULL;
33
	}
34
	_fdinfo[n].flags = FD_ISOPEN;
35
	_fdinfo[n].oflags = 2;
36
	f->fd=n;
37
	f->flags=0;
38
	f->state=OPEN;
39
	f->buf=0;
40
	f->rp=0;
41
	f->wp=0;
42
	f->lp=0;
43
	return f;
44
}