|
|
1.1 root 1: #include <stdio.h>
2: #include <errno.h>
3:
4: FILE *
5: fopen(file, mode)
6: char *file;
7: register char *mode;
8: {
9: extern int errno;
10: register f;
11: register FILE *iop;
12: extern FILE *_lastbuf;
13:
14: for (iop = _iob; iop->_flag&(_IOREAD|_IOWRT); iop++)
15: if (iop >= _lastbuf)
16: return(NULL);
17: if (*mode=='w')
18: f = creat(file, 0666);
19: else if (*mode=='a') {
20: if ((f = open(file, 1)) < 0) {
21: if (errno == ENOENT)
22: f = creat(file, 0666);
23: }
24: if (f >= 0)
25: lseek(f, 0L, 2);
26: } else
27: f = open(file, 0);
28: if (f < 0)
29: return(NULL);
30: iop->_cnt = 0;
31: iop->_file = f;
32: if (*mode != 'r')
33: iop->_flag |= _IOWRT;
34: else
35: iop->_flag |= _IOREAD;
36: return(iop);
37: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.