123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /* $Id$ */
- #include <stdio.h>
- char *malloc();
- _fillbuf(iop)
- register FILE *iop;
- {
- static unsigned char ch[_NFILES];
- iop->_count = 0;
- if (fileno(iop) < 0) return EOF;
- if ( io_testflag(iop, (IO_EOF | IO_ERR )))
- return (EOF);
- if ( !io_testflag(iop, IO_READMODE) )
- return (EOF);
- if (! io_testflag(iop, IO_UNBUFF) && ! iop->_buf) {
- iop->_buf = (unsigned char *) malloc(_BUFSIZ);
- if (! iop->_buf) {
- iop->_flags |= IO_UNBUFF;
- }
- else {
- iop->_flags |= IO_MYBUF;
- iop->_bufsiz = _BUFSIZ;
- }
- }
- if (! iop->_buf) {
- iop->_buf = &ch[fileno(iop)];
- iop->_bufsiz = 1;
- }
- iop->_ptr = iop->_buf;
- iop->_count = read(iop->_fd, iop->_buf, iop->_bufsiz);
- if (iop->_count <= 0){
- if (iop->_count == 0) {
- iop->_flags |= IO_EOF;
- }
- else
- iop->_flags |= IO_ERR;
- return (EOF);
- }
- iop->_count--;
- return *iop->_ptr++;
- }
|