| #include "stdio_impl.h" | |
| int ungetc(int c, FILE *f) | |
| { | |
| if (c == EOF) return c; | |
| FLOCK(f); | |
| if (!f->rpos) __toread(f); | |
| if (!f->rpos || f->rpos <= f->buf - UNGET) { | |
| FUNLOCK(f); | |
| return EOF; | |
| } | |
| *--f->rpos = c; | |
| f->flags &= ~F_EOF; | |
| FUNLOCK(f); | |
| return (unsigned char)c; | |
| } |