/* * Return file offset. * Coordinates with buffering. */ #include "stdio.h" long tell(); long ftell(iop) FILE *iop; { long tres; register adjust; if (iop->_cnt < 0) iop->_cnt = 0; if (iop->_flag&_IOREAD) adjust = - iop->_cnt; else if (iop->_flag&_IOWRT) { adjust = 0; if (iop->_base && (iop->_flag&_IONBF)==0) adjust = iop->_ptr - iop->_base; } else _error("ftell\n"); tres = tell(fileno(iop)); if (tres<0) return(tres); tres =+ adjust; return(tres); }