|
|
1.1 root 1: /*
2: * Return file offset.
3: * Coordinates with buffering.
4: */
5:
6: #include <stdio.h>
7: long lseek();
8:
9:
10: long ftell(iop)
11: FILE *iop;
12: {
13: long tres;
14: register adjust;
15:
16: if (iop->_cnt < 0)
17: iop->_cnt = 0;
18: if (iop->_flag&_IOREAD)
19: adjust = - iop->_cnt;
20: else if (iop->_flag&_IOWRT) {
21: adjust = 0;
22: if (iop->_base && (iop->_flag&_IONBF)==0)
23: adjust = iop->_ptr - iop->_base;
24: } else
25: return(-1);
26: tres = lseek(fileno(iop), 0L, 1);
27: if (tres<0)
28: return(tres);
29: tres += adjust;
30: return(tres);
31: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.