|
|
1.1 ! root 1: /* @(#)setbuf.c 2.2 */ ! 2: /* 3.0 SID # 1.2 */ ! 3: /*LINTLIBRARY*/ ! 4: #include <stdio.h> ! 5: ! 6: extern void free(); ! 7: extern int isatty(); ! 8: extern unsigned char _smbuf[][_SBFSIZ]; ! 9: #if !u370 ! 10: extern unsigned char *_stdbuf[]; ! 11: #else ! 12: extern char *malloc(); ! 13: #endif ! 14: ! 15: void ! 16: setbuf(iop, buf) ! 17: register FILE *iop; ! 18: char *buf; ! 19: { ! 20: register int fno = fileno(iop); /* file number */ ! 21: ! 22: if(iop->_base != NULL && iop->_flag & _IOMYBUF) ! 23: free((char*)iop->_base); ! 24: iop->_flag &= ~(_IOMYBUF | _IONBF | _IOLBF); ! 25: if((iop->_base = (unsigned char*)buf) == NULL) { ! 26: iop->_flag |= _IONBF; /* file unbuffered except in fastio */ ! 27: #if u370 ! 28: if ( (iop->_base = (unsigned char *) malloc(BUFSIZ+8)) != NULL){ ! 29: iop->_flag |= _IOMYBUF; ! 30: _bufend(iop) = iop->_base + BUFSIZ; ! 31: } ! 32: #else ! 33: if (fno < 2) /* for stdin, stdout, use the existing bufs */ ! 34: _bufend(iop) = (iop->_base = _stdbuf[fno]) + BUFSIZ; ! 35: #endif ! 36: ! 37: else /* otherwise, use small buffers reserved for this */ ! 38: _bufend(iop) = (iop->_base = _smbuf[fno]) + _SBFSIZ; ! 39: } ! 40: else { /* regular buffered I/O, standard buffer size */ ! 41: _bufend(iop) = iop->_base + BUFSIZ; ! 42: if (isatty(fno)) ! 43: iop->_flag |= _IOLBF; ! 44: } ! 45: iop->_ptr = iop->_base; ! 46: iop->_cnt = 0; ! 47: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.