head 1.1; branch 1.1.1; access; symbols SFIO_1999:1.1.1.1 SFIO_1998:1.1.1.1 SFIO_1997:1.1.1.1 ATT:1.1.1; locks; strict; comment @ * @; 1.1 date 96.12.13.20.20.14; author rse; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 96.12.13.20.20.14; author rse; state Exp; branches; next ; desc @@ 1.1 log @Initial revision @ text @#include "sfstdio.h" /* Opening a stream given a file desccriptor. ** Written by Kiem-Phong Vo */ #if __STD_C FILE* fdopen(int fd, const char* mode) #else FILE* fdopen(fd,mode) int fd; char* mode; #endif { reg Sfio_t* sp; reg FILE* fp; reg int flags = 0; while(1) switch(*mode++) { case 0: goto e_mode; case 'r': flags = SF_READ; break; case 'w': flags = SF_WRITE; break; case 'a': flags = SF_WRITE|SF_APPENDWR; break; case '+': flags = SF_READ|SF_WRITE; break; case 'b': break; default: return NIL(FILE*); } e_mode : if(!flags) return NIL(FILE*); if(!(sp = sfnew(NIL(Sfio_t*), NIL(Void_t*), (size_t)SF_UNBOUND, fd, flags))) return NIL(FILE*); if(!(fp = _stdstream(sp))) { sfclose(sp); return NIL(FILE*); } return(fp); } @ 1.1.1.1 log @Import of Sfio1997 @ text @@