home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V6 / usr / source / iolib / cgetc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1975-05-13  |  692 b   |  32 lines

  1. # include "ciodec.c"
  2. char cgetc(fn)
  3. {
  4. struct fileps *fp;
  5. if (nargs() != 1)
  6.     IEHzap("cgetc  ");
  7. if (fn <0 || fn >15)
  8.     IEH3err("cgetc: %d illegal file number",fn);
  9. fp = &IEH3fpts[fn];
  10. if (fp == 0 || fp->wrflag > 1)
  11.     IEH3err("cgetc: %d not open to read",fn);
  12. if (fp->wrflag == 0)
  13.     /* file not opened with fopen: try making a buffer */
  14.     IEH3mbuf (fn, 0);
  15. if (fp->eoferr > 1)
  16.     return ('\0');
  17. if (fp->nchars == 0)
  18.      switch (fp->nchars = read(fn, fp->bptr=fp->buff, fp->bsize))
  19.         {
  20.         case -1: /* error */
  21.             if (fp->eoferr == 0)
  22.                 IEH3err("cgetc: error on %d",fn);
  23.             fp->eoferr = 3;
  24.             return ('\0');
  25.         case 0: fp->eoferr = 2;
  26.             return ('\0');
  27.         }
  28. fp->nchars--;
  29. return (*(fp->bptr++));
  30. }
  31. cin 0;
  32.