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

int LoadMCL(unchar *path,...)
{
va_list argptr;
unchar drv[MAXDRIVE],dir[MAXDIR],fname[MAXFILE],cname[MAXPATH];
int ret;
unint n,nn;
MCOLORS *col;
FILE *fp;
	va_start(argptr,path);
	
	/* 読み込みファイル名 */
	strsfn2(path,drv,dir,fname,cname);
	strmfn(cname,drv,dir,fname,BCOLEXT);
	
	/* ファイルオープン */
	fp=fopen(cname,"rb");
	if (fp==NULL) return(1); /* 色ファイルが無い */
	
	/* データチェック */
	sprintf2(cname,COLMES,fname);
	fgets(dir,MAXDIR,fp);
	if (strcmpi(dir,cname)) { /* 識別子不一致 */
		fclose(fp);
		return(2);
	}
	/* 識別子は一致した */
	
	if (fgetc(fp)!=COLVER) { /* ファイル構造バージョン不一致 */
		fclose(fp);
		return(3);
	}
	/* ファイル構造バージョンも一致した */
	
	/* 個数読み込み */
	fread(&n,sizeof(n),1,fp);
	
	/* データ読み込み */
	ret=nn=0;
	while ((col=va_arg(argptr,MCOLORS *))!=NULL) {
		if (nn>=n) {ret=4; break;}
		fgets(cname,MAXPATH,fp);
		fread(col,sizeof(MCOLORS),1,fp);
		nn++;
	}
	if (nn<n) ret=-1;
	
	/* ファイルクローズ */
	fclose(fp);
	va_end(argptr);
	return(ret);
}
