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

int CutFile(FILE *ifp,FILE *ofp,long srec,long erec,unchar *wbuff,size_t wsize)
/* ifpファイルのsrecからerec-1までをofpに切り出す */
/* erec<0のときは最後まで切り出す */
{
long asz;
int sz,ret;
	/* 指定位置まで移動 */
	if (fseek(ifp,srec,SEEK_SET)) return(6);
	
	if (erec<srec) erec=filelength(fileno(ifp)); /* 残りすべての時 */
	ret=0;
	asz=erec-srec; /* 全読み込みサイズ */
	while (asz>(long)wsize) {
		if (fread(wbuff,wsize,1,ifp)==0) {
			ret=9;
			break;
		}
		if (fwrite(wbuff,wsize,1,ofp)==0) {
			ret=7;
			break;
		}
		asz-=(long)wsize;
	}
	if (!ret && asz) { /* 最後の残りがあるとき */
		if (fread(wbuff,(int)asz,1,ifp)) {
			if (fwrite(wbuff,(int)asz,1,ofp)==0) ret=7;
		} else ret=9;
	}
	return(ret);
}
