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