1 #include "stdio_impl.h" 2 ungetc(int c,FILE * f)3int ungetc(int c, FILE *f) 4 { 5 if (c == EOF) return c; 6 7 FLOCK(f); 8 9 if (!f->rpos) __toread(f); 10 if (!f->rpos || f->rpos <= f->buf - UNGET) { 11 FUNLOCK(f); 12 return EOF; 13 } 14 15 *--f->rpos = c; 16 f->flags &= ~F_EOF; 17 18 FUNLOCK(f); 19 return c; 20 } 21