13e12c5d1SDavid du Colombier #include <stdlib.h> 23e12c5d1SDavid du Colombier #include <unistd.h> 33e12c5d1SDavid du Colombier #include <string.h> 43e12c5d1SDavid du Colombier #include "sys9.h" 53e12c5d1SDavid du Colombier #undef OPEN 63e12c5d1SDavid du Colombier #include "../stdio/iolib.h" 73e12c5d1SDavid du Colombier #include "lib.h" 8*219b2ee8SDavid du Colombier #include "dir.h" 93e12c5d1SDavid du Colombier 103e12c5d1SDavid du Colombier FILE * 113e12c5d1SDavid du Colombier tmpfile(void){ 123e12c5d1SDavid du Colombier FILE *f; 133e12c5d1SDavid du Colombier static char name[]="/tmp/tf0000000000000"; 143e12c5d1SDavid du Colombier char *p; 153e12c5d1SDavid du Colombier char db[DIRLEN]; 163e12c5d1SDavid du Colombier int n; 173e12c5d1SDavid du Colombier for(f=_IO_stream;f!=&_IO_stream[FOPEN_MAX];f++) 183e12c5d1SDavid du Colombier if(f->state==CLOSED) 193e12c5d1SDavid du Colombier break; 203e12c5d1SDavid du Colombier if(f==&_IO_stream[FOPEN_MAX]) 213e12c5d1SDavid du Colombier return NULL; 223e12c5d1SDavid du Colombier while(_STAT(name, db) >= 0){ 233e12c5d1SDavid du Colombier p = name+7; 243e12c5d1SDavid du Colombier while(*p == '9') 253e12c5d1SDavid du Colombier *p++ = '0'; 263e12c5d1SDavid du Colombier if(*p == '\0') 273e12c5d1SDavid du Colombier return NULL; 283e12c5d1SDavid du Colombier ++*p; 293e12c5d1SDavid du Colombier } 303e12c5d1SDavid du Colombier n = _CREATE(name, 64|2, 0777); /* remove-on-close */ 313e12c5d1SDavid du Colombier if(n==-1){ 323e12c5d1SDavid du Colombier _syserrno(); 333e12c5d1SDavid du Colombier return NULL; 343e12c5d1SDavid du Colombier } 353e12c5d1SDavid du Colombier _fdinfo[n].flags = FD_ISOPEN; 363e12c5d1SDavid du Colombier _fdinfo[n].oflags = 2; 373e12c5d1SDavid du Colombier f->fd=n; 383e12c5d1SDavid du Colombier f->flags=0; 393e12c5d1SDavid du Colombier f->state=OPEN; 403e12c5d1SDavid du Colombier f->buf=0; 413e12c5d1SDavid du Colombier f->rp=0; 423e12c5d1SDavid du Colombier f->wp=0; 433e12c5d1SDavid du Colombier f->lp=0; 443e12c5d1SDavid du Colombier return f; 453e12c5d1SDavid du Colombier } 46