ref: 6bda784cb6a0a933a3c3bde7e6b6d60d221d88f2
dir: /sys/src/ape/lib/ap/stdio/_IO_newfile.c/
/* * pANS stdio -- fopen */ #include "iolib.h" #define _PLAN9_SOURCE #include <lock.h> #include <errno.h> FILE *_IO_newfile(void) { static FILE *fx=0; static Lock fl; FILE *f; int i; lock(&fl); for(i=0; i<FOPEN_MAX; i++){ if(fx==0 || ++fx >= &_IO_stream[FOPEN_MAX]) fx=_IO_stream; if(fx->state==CLOSED) break; } f = fx; unlock(&fl); if(f->state!=CLOSED){ errno = EMFILE; return NULL; } return f; }