sfungetc.c revision 7c2fbfb345896881c631598ee3852ce9ce33fb07
fa9e4066f08beec538e775443c5be79dd423fcabahrens/***********************************************************************
fa9e4066f08beec538e775443c5be79dd423fcabahrens* This software is part of the ast package *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* Copyright (c) 1985-2008 AT&T Intellectual Property *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* and is licensed under the *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* Common Public License, Version 1.0 *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* by AT&T Intellectual Property *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* A copy of the License is available at *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* Information and Software Systems Research *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* AT&T Research *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* Florham Park NJ *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* Glenn Fowler <gsf@research.att.com> *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* David Korn <dgk@research.att.com> *
fa9e4066f08beec538e775443c5be79dd423fcabahrens* Phong Vo <kpv@research.att.com> *
fa9e4066f08beec538e775443c5be79dd423fcabahrens***********************************************************************/
fa9e4066f08beec538e775443c5be79dd423fcabahrens/* Push back one byte to a given SF_READ stream
fa9e4066f08beec538e775443c5be79dd423fcabahrens** Written by Kiem-Phong Vo.
fa9e4066f08beec538e775443c5be79dd423fcabahrensstatic int _uexcept(Sfio_t* f, int type, Void_t* val, Sfdisc_t* disc)
fa9e4066f08beec538e775443c5be79dd423fcabahrens /* hmm! This should never happen */
fa9e4066f08beec538e775443c5be79dd423fcabahrens /* close the unget stream */
fa9e4066f08beec538e775443c5be79dd423fcabahrensint c; /* the value to be pushed back */
fa9e4066f08beec538e775443c5be79dd423fcabahrens if(c < 0 || (f->mode != SF_READ && _sfmode(f,SF_READ,0) < 0))
fa9e4066f08beec538e775443c5be79dd423fcabahrens /* fast handling of the typical unget */
fa9e4066f08beec538e775443c5be79dd423fcabahrens /* make a string stream for unget characters */
fa9e4066f08beec538e775443c5be79dd423fcabahrens { if(!(uf = sfnew(NIL(Sfio_t*),NIL(char*),(size_t)SF_UNBOUND,
fa9e4066f08beec538e775443c5be79dd423fcabahrens /* space for data */