check for blocks allocated past end of file in indirect blocks
[unix-history] / usr / src / lib / libc / stdio / setbuffer.c
CommitLineData
8f58e367 1/* @(#)setbuffer.c 4.4 (Berkeley) %G% */
30b0fd94
KM
2#include <stdio.h>
3
4setbuffer(iop, buf, size)
5 register struct _iobuf *iop;
6 char *buf;
7 int size;
8{
9 if (iop->_base != NULL && iop->_flag&_IOMYBUF)
10 free(iop->_base);
11 iop->_flag &= ~(_IOMYBUF|_IONBF|_IOLBF);
12 if ((iop->_base = buf) == NULL) {
13 iop->_flag |= _IONBF;
14 iop->_bufsiz = NULL;
15 } else {
16 iop->_ptr = iop->_base;
17 iop->_bufsiz = size;
18 }
19 iop->_cnt = 0;
20}
d5c54585
KM
21
22/*
23 * set line buffering for either stdout or stderr
24 */
25setlinebuf(iop)
26 register struct _iobuf *iop;
27{
8f58e367 28 char *buf;
63b1c981 29 extern char *malloc();
d5c54585 30
d5c54585 31 fflush(iop);
8f58e367
MK
32 setbuffer(iop, NULL, 0);
33 buf = malloc(BUFSIZ);
34 if (buf != NULL) {
35 setbuffer(iop, buf, BUFSIZ);
36 iop->_flag |= _IOLBF|_IOMYBUF;
37 }
d5c54585 38}