xref: /csrg-svn/lib/libc/stdio/setbuffer.c (revision 17951)
1*17951Sserge /* @(#)setbuffer.c	4.5 (Berkeley) 02/13/85 */
28327Smckusick #include	<stdio.h>
38327Smckusick 
48327Smckusick setbuffer(iop, buf, size)
5*17951Sserge 	register FILE *iop;
68327Smckusick 	char *buf;
78327Smckusick 	int size;
88327Smckusick {
98327Smckusick 	if (iop->_base != NULL && iop->_flag&_IOMYBUF)
108327Smckusick 		free(iop->_base);
118327Smckusick 	iop->_flag &= ~(_IOMYBUF|_IONBF|_IOLBF);
128327Smckusick 	if ((iop->_base = buf) == NULL) {
138327Smckusick 		iop->_flag |= _IONBF;
148327Smckusick 		iop->_bufsiz = NULL;
158327Smckusick 	} else {
168327Smckusick 		iop->_ptr = iop->_base;
178327Smckusick 		iop->_bufsiz = size;
188327Smckusick 	}
198327Smckusick 	iop->_cnt = 0;
208327Smckusick }
2111307Smckusick 
2211307Smckusick /*
2311307Smckusick  * set line buffering for either stdout or stderr
2411307Smckusick  */
2511307Smckusick setlinebuf(iop)
26*17951Sserge 	register FILE *iop;
2711307Smckusick {
2816522Skarels 	char *buf;
2916491Sralph 	extern char *malloc();
3011307Smckusick 
3111307Smckusick 	fflush(iop);
3216522Skarels 	setbuffer(iop, NULL, 0);
3316522Skarels 	buf = malloc(BUFSIZ);
3416522Skarels 	if (buf != NULL) {
3516522Skarels 		setbuffer(iop, buf, BUFSIZ);
3616522Skarels 		iop->_flag |= _IOLBF|_IOMYBUF;
3716522Skarels 	}
3811307Smckusick }
39