|
|
1.1 ! root 1: /* @(#)fdopen.c 4.2 (Berkeley) 3/9/81 */ ! 2: /* ! 3: * Unix routine to do an "fopen" on file descriptor ! 4: * The mode has to be repeated because you can't query its ! 5: * status ! 6: */ ! 7: ! 8: #include <stdio.h> ! 9: #include <errno.h> ! 10: ! 11: FILE * ! 12: fdopen(fd, mode) ! 13: register char *mode; ! 14: { ! 15: extern int errno; ! 16: register FILE *iop; ! 17: extern FILE *_lastbuf; ! 18: ! 19: for (iop = _iob; iop->_flag&(_IOREAD|_IOWRT|_IORW); iop++) ! 20: if (iop >= _lastbuf) ! 21: return(NULL); ! 22: iop->_cnt = 0; ! 23: iop->_file = fd; ! 24: if (*mode != 'r') { ! 25: iop->_flag |= _IOWRT; ! 26: if (*mode == 'a') ! 27: lseek(fd, 0L, 2); ! 28: } else ! 29: iop->_flag |= _IOREAD; ! 30: if (mode[1] == '+') { ! 31: iop->_flag &= ~(_IOREAD|_IOWRT); ! 32: iop->_flag |= _IORW; ! 33: } ! 34: return(iop); ! 35: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.