1*d9dc5dd1SDavid du Colombier /* 2*d9dc5dd1SDavid du Colombier * pANS stdio -- fseeko 3*d9dc5dd1SDavid du Colombier */ 4*d9dc5dd1SDavid du Colombier #include "iolib.h" fseeko(FILE * f,off_t offs,int type)5*d9dc5dd1SDavid du Colombierint fseeko(FILE *f, off_t offs, int type){ 6*d9dc5dd1SDavid du Colombier switch(f->state){ 7*d9dc5dd1SDavid du Colombier case ERR: 8*d9dc5dd1SDavid du Colombier case CLOSED: 9*d9dc5dd1SDavid du Colombier return -1; 10*d9dc5dd1SDavid du Colombier case WR: 11*d9dc5dd1SDavid du Colombier fflush(f); 12*d9dc5dd1SDavid du Colombier break; 13*d9dc5dd1SDavid du Colombier case RD: 14*d9dc5dd1SDavid du Colombier if(type==1 && f->buf!=f->unbuf) 15*d9dc5dd1SDavid du Colombier offs-=f->wp-f->rp; 16*d9dc5dd1SDavid du Colombier break; 17*d9dc5dd1SDavid du Colombier } 18*d9dc5dd1SDavid du Colombier if(f->flags&STRING || lseek(f->fd, offs, type)==-1) 19*d9dc5dd1SDavid du Colombier return -1; 20*d9dc5dd1SDavid du Colombier if(f->state==RD) f->rp=f->wp=f->buf; 21*d9dc5dd1SDavid du Colombier if(f->state!=OPEN) 22*d9dc5dd1SDavid du Colombier f->state=RDWR; 23*d9dc5dd1SDavid du Colombier return 0; 24*d9dc5dd1SDavid du Colombier } 25