xref: /original-bsd/lib/libc/stdio/setbuf.c (revision 43bfbc1c)
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[] = "@(#)setbuf.c	5.2 (Berkeley) 03/09/86";
9 #endif LIBC_SCCS and not lint
10 
11 #include	<stdio.h>
12 
13 setbuf(iop, buf)
14 register FILE *iop;
15 char *buf;
16 {
17 	if (iop->_base != NULL && iop->_flag&_IOMYBUF)
18 		free(iop->_base);
19 	iop->_flag &= ~(_IOMYBUF|_IONBF|_IOLBF);
20 	if ((iop->_base = buf) == NULL) {
21 		iop->_flag |= _IONBF;
22 		iop->_bufsiz = NULL;
23 	} else {
24 		iop->_ptr = iop->_base;
25 		iop->_bufsiz = BUFSIZ;
26 	}
27 	iop->_cnt = 0;
28 }
29