home *** CD-ROM | disk | FTP | other *** search
/ CD Shareware Magazine 1996 December / CD_shareware_12-96.iso / DOS / Programa / CCDL122.ZIP / CLIBS / IO / READBUF.C < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-26  |  921 b   |  41 lines

  1. #include <stdio.h>
  2. #include <time.h>
  3. #include <libp.h>
  4.  
  5. int _readbuf(FILE *stream)
  6. {
  7.     if (!(stream->flags & _F_IN) || !stream->level) {
  8.         if (stream->flags & _F_OUT) {
  9.             if (fflush(stream))
  10.                 return EOF;
  11.         }
  12.         stream->flags &= ~_F_OUT;
  13.         if (!(stream->flags & _F_IN)) {
  14.             stream->level = 0;
  15.             stream->curp = stream->buffer;
  16.             stream->hold = 0;
  17.         }
  18.         stream->flags |= _F_IN;
  19.         if (!stream->level) {
  20.             stream->curp = stream->buffer;
  21.             if (stream->flags & _F_LBUF) {
  22.                 while (stream->level < stream->bsize) {
  23.                     int sz = _ll_read(stream->fd,stream->curp,1);
  24.                     if (!sz)
  25.                         break;
  26.                     stream->level++;
  27.                     if ((*stream->curp++ == '\n'))
  28.                         break;
  29.                 }
  30.                 stream->curp = stream->buffer;
  31.             }
  32.             else 
  33.                 stream->level = _ll_read(stream->fd,stream->buffer,stream->bsize) 
  34.         }
  35.     }
  36.     if (stream->level == 0) {
  37.         stream->flags |= _F_EOF;
  38.         return EOF;
  39.     }
  40.     return 0;
  41. }