/************************************************************************** * * u n g e t c F u n c t i o n * ----------------------------- * Copyright 1982 by Digital Research Inc. All rights reserved. * * "ungetc" puts a char back into its (read only) stream. It's * guaranteed to work for at least one char, provided the * stream is buffered and something has been read. * * Calling sequence: * ret = ungetc(c,stream) * Where: * ret = c if it worked, FAILURE o.w. * c = char to push back * stream -> (FILE *) place to push back to * *****************************************************************************/ #include "stdio.h" WORD ungetc(ch,sp) /* CLEAR FUNCTION ***********/ REG WORD ch; /* char to unget */ REG FILE *sp; /* stream to unget to */ { /****************************/ if( ch == EOF ) /* no allowed if EOF */ return(FAILURE); /* */ if( sp->_flag & _IOREAD /* if file is read able */ && sp->_base != NULL /* and something's read */ && sp->_ptr > sp->_base ) /* and buffer not empty */ { /* then... */ *--sp->_ptr = ch; /* back up buffer & store */ sp->_cnt++; /* there's one more byte */ return(ch); /* it worked! */ } /****************************/ return(FAILURE); /* it didn't work... */ } /****************************/ / /