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

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


/* fill buffer with new data */
int _fillbuf(FILE *f)
{
    _chkabort();
    if(!f) return(EOF);
    if((f->flags&(_READABLE|_WRITE|_EOF|_ERR))!=_READABLE) return(EOF);
    f->flags|=_READ;
    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);
    f->pointer=f->base;
    f->count=PPCRead((BPTR)f->filehandle,f->pointer,(long)f->bufsize);
    if(--f->count<0){
        if(f->count==-1) f->flags|=_EOF;
         else            f->flags|=_ERR;
        f->count=0;
        return(EOF);
    }
    return((unsigned char) *f->pointer++);
}
