|
|
1.1 ! root 1: /* @(#)setvbuf.c 1.2 */ ! 2: /*LINTLIBRARY*/ ! 3: #include "stdio.h" ! 4: ! 5: extern void free(); ! 6: extern int isatty(); ! 7: ! 8: int ! 9: setvbuf(iop, type, buf, size) ! 10: register FILE *iop; ! 11: register int type; ! 12: register char *buf; ! 13: register int size; ! 14: { ! 15: char *malloc(); ! 16: ! 17: if(iop->_base != NULL && iop->_flag & _IOMYBUF) ! 18: free((char*)iop->_base); ! 19: iop->_flag &= ~(_IOMYBUF | _IONBF | _IOLBF); ! 20: switch (type) { ! 21: /*note that the flags are the same as the possible values for type*/ ! 22: case _IONBF: ! 23: /* file is unbuffered */ ! 24: iop->_flag |= _IONBF; ! 25: _bufend(iop) = iop->_base = NULL; ! 26: break; ! 27: case _IOLBF: ! 28: case _IOFBF: ! 29: iop->_flag |= type; ! 30: size = (size == 0) ? BUFSIZ : size; ! 31: if ((size > BUFSIZ) || (iop->_base == NULL)) ! 32: iop->_base = (unsigned char *) ! 33: malloc((unsigned)(size + 8)); ! 34: _bufend(iop) = iop->_base + size; ! 35: break; ! 36: default: ! 37: return -1; ! 38: } ! 39: iop->_ptr = iop->_base; ! 40: iop->_cnt = 0; ! 41: return 0; ! 42: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.