home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
-
- #include <proto/dos.h>
-
- size_t fread(void *ptr,size_t size,size_t nmemb,FILE *f)
- {
- size_t cnt,total=size*nmemb;
- char *p=ptr;
- long result;
- if(!f||!total) return(0);
- if((f->flags&(_READABLE|_WRITE|_ERR|_EOF))!=_READABLE) return(0);
- f->flags|=_READ;
- if(cnt=f->count){
- /* Buffer lesen */
- if(total<=cnt){
- memcpy(p,f->pointer,total);
- f->pointer+=total;f->count-=total;
- return(nmemb);
- }else{
- memcpy(p,f->pointer,cnt);
- total-=cnt;p+=cnt;
- f->count=0;
- }
- }
- result=Read((BPTR)f->filehandle,p,total);
- if(result==-1){f->flags|=_ERR;return(cnt/size);}
- if(result<total){
- f->flags|=_EOF;
- return((cnt+result)/size);
- }else{
- return(nmemb);
- }
- }
-