// // Synchronize and close the current stream. // int fcclose(void) { unsigned char *ptr; if (_Fcin.fclast == 0) return 0; if ((ptr = _Fcin.fcptr) > _Fcin.fcbuff && *(ptr - 1) == 0) _Fcin.fcptr--; if (_Fcin.fcchar) *_Fcin.fclast = _Fcin.fcchar; _Fcin.fclast = NULL; _Fcin.fcleft = 0; return fcfill(); }
/* * Synchronize and close the current stream */ int fcclose(void) { register unsigned char *ptr; if(_Fcin.fclast==0) return(0); if((ptr=_Fcin.fcptr)>_Fcin.fcbuff && *(ptr-1)==0) _Fcin.fcptr--; if(_Fcin.fcchar) *_Fcin.fclast = _Fcin.fcchar; _Fcin.fclast = 0; _Fcin.fcleft = 0; return(fcfill()); }
// // This was originally implemented as a macro: // #define fcgetc(c) (((c = fcget()) || (c = fcfill())), c) // // However, that is an ugly API that causes lots of lint warnings. // int fcgetc() { int c = fcget(); if (!c) c = fcfill(); return c; }