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