21 lines
278 B
C
21 lines
278 B
C
|
#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;
|
||
|
}
|