/* * ungetc.c - push a character back onto an input stream */ /* $Id$ */ #include #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