1#include "stdio_impl.h" 2 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