1*3e12c5d1SDavid du Colombier /* 2*3e12c5d1SDavid du Colombier * pANS stdio -- fflush 3*3e12c5d1SDavid du Colombier */ 4*3e12c5d1SDavid du Colombier #include "iolib.h" fflush(FILE * f)5*3e12c5d1SDavid du Colombierint fflush(FILE *f){ 6*3e12c5d1SDavid du Colombier int error, cnt; 7*3e12c5d1SDavid du Colombier if(f==NULL){ 8*3e12c5d1SDavid du Colombier error=0; 9*3e12c5d1SDavid du Colombier for(f=_IO_stream;f!=&_IO_stream[FOPEN_MAX];f++) 10*3e12c5d1SDavid du Colombier if(f->state==WR && fflush(f)==EOF) 11*3e12c5d1SDavid du Colombier error=EOF; 12*3e12c5d1SDavid du Colombier return error; 13*3e12c5d1SDavid du Colombier } 14*3e12c5d1SDavid du Colombier if(f->flags&STRING) return EOF; 15*3e12c5d1SDavid du Colombier switch(f->state){ 16*3e12c5d1SDavid du Colombier default: /* OPEN RDWR EOF RD */ 17*3e12c5d1SDavid du Colombier return 0; 18*3e12c5d1SDavid du Colombier case CLOSED: 19*3e12c5d1SDavid du Colombier case ERR: 20*3e12c5d1SDavid du Colombier return EOF; 21*3e12c5d1SDavid du Colombier case WR: 22*3e12c5d1SDavid du Colombier cnt=(f->flags&LINEBUF?f->lp:f->wp)-f->buf; 23*3e12c5d1SDavid du Colombier if(cnt && write(f->fd, f->buf, cnt)!=cnt){ 24*3e12c5d1SDavid du Colombier f->state=ERR; 25*3e12c5d1SDavid du Colombier return EOF; 26*3e12c5d1SDavid du Colombier } 27*3e12c5d1SDavid du Colombier f->rp=f->wp=f->buf; 28*3e12c5d1SDavid du Colombier f->state=RDWR; 29*3e12c5d1SDavid du Colombier return 0; 30*3e12c5d1SDavid du Colombier } 31*3e12c5d1SDavid du Colombier } 32