/*
 * ungetc.c - push a character back onto an input stream
 */
/* $Id$ */

#include <stdio.h>

#if ACKCONF_WANT_STDIO && ACKCONF_WANT_EMULATED_FILE

int ungetc(int ch, FILE* stream)
{
	unsigned char* p;

	if (ch == EOF || !io_testflag(stream, _IOREADING))
		return EOF;
	if (stream->_ptr == stream->_buf)
	{
		if (stream->_count != 0)
			return EOF;
		stream->_ptr++;
	}
	stream->_count++;
	p = --(stream->_ptr); /* ??? Bloody vax assembler !!! */
	/* ungetc() in sscanf() shouldn't write in rom */
	if (*p != (unsigned char)ch)
		*p = (unsigned char)ch;
	return ch;
}

#endif
