xref: /original-bsd/lib/libc/stdio/ungetc.c (revision d3640572)
1 #if defined(LIBC_SCCS) && !defined(lint)
2 static char sccsid[] = "@(#)ungetc.c	5.3 (Berkeley) 03/26/86";
3 #endif LIBC_SCCS and not lint
4 
5 #include <stdio.h>
6 
7 ungetc(c, iop)
8 	register FILE *iop;
9 {
10 	if (c == EOF || (iop->_flag & (_IOREAD|_IORW)) == 0 ||
11 	    iop->_ptr == NULL || iop->_base == NULL)
12 		return (EOF);
13 
14 	if (iop->_ptr == iop->_base)
15 		if (iop->_cnt == 0)
16 			iop->_ptr++;
17 		else
18 			return (EOF);
19 
20 	iop->_cnt++;
21 	*--iop->_ptr = c;
22 
23 	return (c);
24 }
25