#include <stdio.h>
#include "defines.h"

extern	int	_Cs_fcash_;
extern	unchar	*_Cs_cashbuff_;
extern	long	_Cs_csize_,_Cs_cseek_;

int cash_fread(unchar *buff,int size,int count,FILE *fp)
/* ミニ キャッシュ システム:fread */
{
int cnt;
	if (!_Cs_fcash_) return(fread(buff,size,count,fp));
	/* キャッシュバッファーから読む時 */
	if (_Cs_cseek_+size*count<=_Cs_csize_) { /* 指定分全部読み込める時 */
		memcpy(buff,&_Cs_cashbuff_[_Cs_cseek_],size*count);
		_Cs_cseek_+=(size*count);
		return(count);
	} else { /* 全部読み込めない時は読み込めるだけ */
		cnt=(_Cs_csize_-_Cs_cseek_)/size; /* 読み込めるcount数 */
		if (cnt>0) {
			memcpy(buff,&_Cs_cashbuff_[_Cs_cseek_],size*cnt);
			_Cs_cseek_+=(size*cnt);
		}
		return(cnt);
	}
}
