|
|
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.