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

#include <proto/dos.h>

/*  schreibt Daten aus Buffer   */
/*  fuegt c als neues Zeichen ein, falls c!=EOF */
int _putbuf(int c,FILE *f)
{
    _chkabort();
    if(!f) return(EOF);
    if((f->flags&(_WRITEABLE|_READ|_EOF|_ERR))!=_WRITEABLE) return(EOF);
    if(!f->bufsize){if(f->flags&_UNBUF) f->bufsize=1; else f->bufsize=BUFSIZ;}
    if(!f->base){
        if(!(f->base=(char *)malloc(f->bufsize+1)+1))
            return(EOF);
    }else{
        int len=f->pointer-f->base;
        if(f->flags&_WRITE)
         if(Write((BPTR)f->filehandle,f->base,len)!=len) return(EOF);
    }
    f->flags|=_WRITE;
    f->pointer=f->base;
    f->count=f->bufsize;
    *f->pointer++=c;
    f->count--;
    return(0);  /*  hier noch ueberlegen    */
}
