1 /* 2 * pANS stdio -- ungetc 3 */ 4 #include "iolib.h" ungetc(int c,FILE * f)5int ungetc(int c, FILE *f){ 6 if(c==EOF) return EOF; 7 switch(f->state){ 8 default: /* WR */ 9 f->state=ERR; 10 return EOF; 11 case CLOSED: 12 case ERR: 13 return EOF; 14 case OPEN: 15 _IO_setvbuf(f); 16 case RDWR: 17 case END: 18 f->rp=f->wp=f->buf+(f->bufl==0?1:f->bufl); 19 f->state=RD; 20 case RD: 21 if(f->rp==f->buf) return EOF; 22 if(f->flags&STRING) 23 f->rp--; 24 else 25 *--f->rp=c; 26 return (char)c; 27 } 28 } 29