Mini-Unix/usr/source/iolib/cgetc.c

Compare this file to the similar file:
Show the results in this format:

# include "ciodec.c"
char cgetc(fn)
{
struct fileps *fp;
if (nargs() != 1)
	IEHzap("cgetc  ");
if (fn <0 || fn >15)
	IEH3err("cgetc: %d illegal file number",fn);
fp = &IEH3fpts[fn];
if (fp == 0 || fp->wrflag > 1)
	IEH3err("cgetc: %d not open to read",fn);
if (fp->wrflag == 0)
	/* file not opened with fopen: try making a buffer */
	IEH3mbuf (fn, 0);
if (fp->eoferr > 1)
	return ('\0');
if (fp->nchars == 0)
	 switch (fp->nchars = read(fn, fp->bptr=fp->buff, fp->bsize))
		{
		case -1: /* error */
			if (fp->eoferr == 0)
				IEH3err("cgetc: error on %d",fn);
			fp->eoferr = 3;
			return ('\0');
		case 0: fp->eoferr = 2;
			return ('\0');
		}
fp->nchars--;
return (*(fp->bptr++));
}
cin 0;