/*****************************************************************************/
/* ファイルコピー関数 */
/*****************************************************************************/

#include <stdio.h>
#include <doslibm.h>
#include "deftype.h"
#include "anum.h"	// CalcSum()
#include "fat32.h"

/*****************************************************************************/

int file_copy_sub32(fpin,fpout,fsize,cbuff,bsize,vflag,retry,sum)
FILE32 *fpin;
FILE *fpout;
int fsize,bsize,vflag,retry,*sum;
unchar *cbuff;
/* リターン値
	0 正常終了
	1 読み込みエラー
	2 書き込みエラー
	3 Disk Full
*/
{
int rsize,wsize;
int i;
	if (sum!=NULL) { /* チェックサム計算モード */
		*sum=0;
		i=0;
	}
	while (!feof32(fpin)) {
		if (fsize>0 && fsize<bsize) bsize=fsize;
		
		/* 読み込み */
		rsize=fread32(cbuff,1,bsize,fpin);
		
		/* チェックサム計算モード */
		if (sum!=NULL) *sum=CalcSum(*sum,cbuff,rsize,&i);
		
		/* 書き込み */
		wsize=fwrite(cbuff,1,rsize,fpout);
		if (wsize<rsize) return(3); /* disk full */
		
		if (fsize>0) {
			fsize-=bsize;
			if (fsize<=0) break;
		}
	}
	/* error check */
	if (ferror32(fpin)) return(1); /* read error */
	if (ferror(fpout)) return(2); /* write error */
	
	return(0);
}

/*****************************************************************************/
