13e12c5d1SDavid du Colombier /* 23e12c5d1SDavid du Colombier * pANS stdio -- sopenr 33e12c5d1SDavid du Colombier */ 43e12c5d1SDavid du Colombier #include "iolib.h" 53e12c5d1SDavid du Colombier sopenr(const char * s)63e12c5d1SDavid du ColombierFILE *sopenr(const char *s){ 73e12c5d1SDavid du Colombier FILE *f; 8*7dd7cddfSDavid du Colombier qlock(&_stdiolk); 93e12c5d1SDavid du Colombier for(f=_IO_stream;f!=&_IO_stream[FOPEN_MAX];f++) if(f->state==CLOSED) break; 10*7dd7cddfSDavid du Colombier if(f==&_IO_stream[FOPEN_MAX]) { 11*7dd7cddfSDavid du Colombier qunlock(&_stdiolk); 12*7dd7cddfSDavid du Colombier return NULL; 13*7dd7cddfSDavid du Colombier } 143e12c5d1SDavid du Colombier f->buf=f->rp=(char *)s; /* what an annoyance const is */ 153e12c5d1SDavid du Colombier f->bufl=strlen(s); 163e12c5d1SDavid du Colombier f->wp=f->buf+f->bufl; 173e12c5d1SDavid du Colombier f->state=RD; 183e12c5d1SDavid du Colombier f->flags=STRING; 193e12c5d1SDavid du Colombier f->fd=-1; 20*7dd7cddfSDavid du Colombier qunlock(&_stdiolk); 213e12c5d1SDavid du Colombier return f; 223e12c5d1SDavid du Colombier } 23