32 lines
692 B
C
32 lines
692 B
C
# 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;
|