ungetc.c raw

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