# 2.11BSD#431 - /usr/src/lib/libc/stdio/filbuf.c

##### Functions

    _filbuf           X

       1: /*
       2:  * Copyright (c) 1980 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  */
       6:
       7: #if defined(LIBC_SCCS) && !defined(lint)
       8: static char sccsid[] = "@(#)filbuf.c	5.3 (Berkeley) 3/9/86";
       9: #endif LIBC_SCCS and not lint
      10:
      11: #include    <stdio.h>
      12: #include    <sys/types.h>
      13: #include    <sys/stat.h>
      14: char    *malloc();
      15:
      16: _filbuf(iop)
      17: register FILE *iop;
      18: {
      19:     int size;
      20:     struct stat stbuf;
      21:     extern char *_smallbuf;
      22:     char c;
      23:
      24:     if (iop->_flag & _IORW)
      25:         iop->_flag |= _IOREAD;
      26:
      27:     if ((iop->_flag&_IOREAD) == 0)
      28:         return(EOF);
      29:     if (iop->_flag&(_IOSTRG|_IOEOF))
      30:         return(EOF);
      31: tryagain:
      32:     if (iop->_base==NULL) {
      33:         if (iop->_flag&_IONBF) {
      34:             iop->_base = _smallbuf ? &_smallbuf[fileno(iop)] : &c;
      35:             goto tryagain;
      36:         }
      37:         if (fstat(fileno(iop), &stbuf) < 0 || stbuf.st_blksize <= NULL)
      38:             size = BUFSIZ;
      39:         else
      40:             size = stbuf.st_blksize;
      41:         if ((iop->_base = malloc(size)) == NULL) {
      42:             iop->_flag |= _IONBF;
      43:             goto tryagain;
      44:         }
      45:         iop->_flag |= _IOMYBUF;
      46:         iop->_bufsiz = size;
      47:     }
      48:     if (iop == stdin) {
      49:         if (stdout->_flag&_IOLBF)
      50:             fflush(stdout);
      51:         if (stderr->_flag&_IOLBF)
      52:             fflush(stderr);
      53:     }
      54:     iop->_cnt = read(fileno(iop), iop->_base,
      55:         iop->_flag & _IONBF ? 1 : iop->_bufsiz);
      56:     iop->_ptr = iop->_base;
      57:     if (iop->_flag & _IONBF && iop->_base == &c)
      58:         iop->_base = NULL;
      59:     if (--iop->_cnt < 0) {
      60:         if (iop->_cnt == -1) {
      61:             iop->_flag |= _IOEOF;
      62:             if (iop->_flag & _IORW)
      63:                 iop->_flag &= ~_IOREAD;
      64:         } else
      65:             iop->_flag |= _IOERR;
      66:         iop->_cnt = 0;
      67:         return(EOF);
      68:     }
      69:     return(*iop->_ptr++&0377);
      70: }

#### Defined functions

_filbuf defined in line 16; used 17 times

- in /usr/include/stdio.h line 50
- in /usr/src/games/hunt/playit.c line 202
- in /usr/src/include/stdio.h line 37
- in /usr/src/lib/libc/pdp/stdio/fgetc.s line 15, 33
- in /usr/src/lib/libc/pdp/stdio/fgets.s line 15, 64
- in /usr/src/lib/libc/pdp/stdio/gets.s line 15, 52
- in /usr/src/lib/libc/stdio/fread.c line 33
- in /usr/src/new/PORT/perl.1.0.0/str.c line 349
- in /usr/src/new/PORT/perl.1.0.0/x2p/str.c line 304
- in /usr/src/new/PORT/perl.1.0.10/str.c line 352
- in /usr/src/new/PORT/perl.1.0.10/x2p/str.c line 304
- in /usr/src/new/PORT/perl.1.0.16/str.c line 352
- in /usr/src/new/PORT/perl.1.0.16/x2p/str.c line 304
- in /usr/src/new/kermit5.188/ckcdeb.h line 1257

#### Defined variables

sccsid defined in line 8; never used

Last modified: 1986-03-10 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 655 |