#include <stdlib.h>
#include <stdio.h>

int setvbuf(FILE *f,char *buf,int mode,size_t size)
{
    if(size<2||f->flags&(_READ|_WRITE)) return(EOF);
    if(mode==_IONBF) {f->flags|=_UNBUF;size=1;} else f->flags&=~_UNBUF;
    if(mode==_IOLBF) f->flags|=_LINEBUF; else f->flags&=~_LINEBUF;
    if(buf){
        size--;                 /*  eins wird fuer unget gebraucht  */
        f->base=buf+1;
        f->flags|=_NOTMYBUF;
    }else{
        if(!(f->base=(char *)malloc(size+1)+1))
            return(EOF);
    }
    f->bufsize=size;
    return(0);
}

