From e5888a1ffdae813d7575f5fb02275c6bb07e5199 Mon Sep 17 00:00:00 2001 From: Taru Karttunen Date: Wed, 30 Mar 2011 15:46:40 +0300 Subject: Import sources from 2011-03-30 iso image --- sys/src/ape/lib/ap/stdio/ungetc.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100755 sys/src/ape/lib/ap/stdio/ungetc.c (limited to 'sys/src/ape/lib/ap/stdio/ungetc.c') diff --git a/sys/src/ape/lib/ap/stdio/ungetc.c b/sys/src/ape/lib/ap/stdio/ungetc.c new file mode 100755 index 000000000..3c071690b --- /dev/null +++ b/sys/src/ape/lib/ap/stdio/ungetc.c @@ -0,0 +1,33 @@ +/* + * pANS stdio -- ungetc + */ +#include "iolib.h" +int ungetc(int c, FILE *f){ + if(c==EOF) return EOF; + switch(f->state){ + default: /* WR */ + f->state=ERR; + return EOF; + case CLOSED: + case ERR: + return EOF; + case OPEN: + _IO_setvbuf(f); + case RDWR: + case END: + f->wp=f->buf; + if(f->bufl==0) + f->wp += 1; + else + f->wp += f->bufl; + f->rp = f->wp; + f->state=RD; + case RD: + if(f->rp==f->buf) return EOF; + if(f->flags&STRING) + f->rp--; + else + *--f->rp=c; + return (char)c; + } +} -- cgit v1.2.3