master
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 (unsigned char)c;
20}