1*d9dc5dd1SDavid du Colombier /* 2*d9dc5dd1SDavid du Colombier * pANS stdio -- ftello 3*d9dc5dd1SDavid du Colombier */ 4*d9dc5dd1SDavid du Colombier #include "iolib.h" ftello(FILE * f)5*d9dc5dd1SDavid du Colombieroff_t ftello(FILE *f){ 6*d9dc5dd1SDavid du Colombier off_t seekp=lseek(f->fd, 0L, 1); 7*d9dc5dd1SDavid du Colombier if(seekp<0) return -1; /* enter error state? */ 8*d9dc5dd1SDavid du Colombier switch(f->state){ 9*d9dc5dd1SDavid du Colombier default: 10*d9dc5dd1SDavid du Colombier return seekp; 11*d9dc5dd1SDavid du Colombier case RD: 12*d9dc5dd1SDavid du Colombier return seekp-(f->wp-f->rp); 13*d9dc5dd1SDavid du Colombier case WR: 14*d9dc5dd1SDavid du Colombier return (f->flags&LINEBUF?f->lp:f->wp)-f->buf+seekp; 15*d9dc5dd1SDavid du Colombier } 16*d9dc5dd1SDavid du Colombier } 17