/* from Dale Schumacher's dLibs library */ #include #include #include void setbuf(fp, buf) register FILE *fp; char *buf; { assert((fp != NULL)); if(fp->_flag & _IOMYBUF) free(fp->_base); fp->_flag &= ~(_IOFBF | _IOLBF | _IONBF | _IOMYBUF); fp->_cnt = 0; if(fp->_base = (unsigned char *)buf) /* assignment intentional */ { fp->_flag |= _IOFBF; /* this is intentionally not __DEFAULT_BUFSIZ__ ++jrb */ fp->_bsiz = BUFSIZ; } else { fp->_flag |= _IONBF; fp->_base = &(fp->_ch); /* use tiny buffer */ fp->_bsiz = 1; } fp->_ptr = fp->_base; } /* * bezerkly'ism * change the buffering on stream from block/unbuffered to line buffered. * should stream be flushed before change?? i think so. * ++jrb */ void setlinebuf(fp) register FILE *fp; { assert((fp != NULL)); #ifndef NDEBUG assert((fflush(fp) != EOF)); #else (void)fflush(fp); #endif fp->_flag &= ~(_IOFBF | _IONBF); fp->_flag |= _IOLBF; }