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