V10/libI77/notused/setvbuf.c
/* @(#)setvbuf.c 1.2 */
/*LINTLIBRARY*/
#include "stdio.h"
extern void free();
extern int isatty();
int
setvbuf(iop, type, buf, size)
register FILE *iop;
register int type;
register char *buf;
register int size;
{
char *malloc();
if(iop->_base != NULL && iop->_flag & _IOMYBUF)
free((char*)iop->_base);
iop->_flag &= ~(_IOMYBUF | _IONBF | _IOLBF);
switch (type) {
/*note that the flags are the same as the possible values for type*/
case _IONBF:
/* file is unbuffered */
iop->_flag |= _IONBF;
_bufend(iop) = iop->_base = NULL;
break;
case _IOLBF:
case _IOFBF:
iop->_flag |= type;
size = (size == 0) ? BUFSIZ : size;
if ((size > BUFSIZ) || (iop->_base == NULL))
iop->_base = (unsigned char *)
malloc((unsigned)(size + 8));
_bufend(iop) = iop->_base + size;
break;
default:
return -1;
}
iop->_ptr = iop->_base;
iop->_cnt = 0;
return 0;
}