/*
** vbcc-Amiga-PowerPC version of _putbuf.c
**
** v0.1 04.10.97 phx
*/

#include <stdlib.h>
#include <stdio.h>
#include <powerup/gcclib/powerup_protos.h>

/* write data from buffer */
/* inserts c as a new character, if 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(PPCWrite((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    */
}
