#include "..\\include\Lib_Clara.h"
#include "..\\include\Dir.h"
#include "..\\include\cfg_items.h"
#include "conf_loader.h"


const wchar_t *successed_config_path=L"";
const wchar_t *successed_config_name=L"";

#pragma segment="CONFIG_C"
int LoadConfigData(const wchar_t *path,const wchar_t *fname)
{
	int f;
	int result=-1;
	void *cfg;
	FSTAT _fstat;
	unsigned int rlen;

	cfg=(char *)__segment_begin("CONFIG_C");

	unsigned int len=(char *)__segment_end("CONFIG_C")-(char *)__segment_begin("CONFIG_C");
        
        char* buf = new char[len];
	if ( buf )
	{
		if (fstat(path,fname,&_fstat)!=-1)
		{
			if ((f=_fopen(path,fname,FSX_O_RDONLY,FSX_S_IREAD|FSX_S_IWRITE,0))>=0)
			{
				rlen=fread(f,buf,len);
				fclose(f);
                                
				if (rlen == _fstat.fsize && rlen == len)
                                {
                                  memcpy(cfg,buf,len);
                                  result=0;
                                }
			}
		}
		if( result != 0 )
		{
			if ((f=_fopen(path,fname,FSX_O_WRONLY|FSX_O_TRUNC,FSX_S_IREAD|FSX_S_IWRITE,0))>=0)
			{
				if (fwrite(f,cfg,len)==len) result=0;
				fclose(f);
			}
		}
		delete buf;
	}
	if (result>=0)
	{
		successed_config_path=path;
		successed_config_name=fname;
	}
	return(result);
}


void InitConfig(void)
{
	if (LoadConfigData(GetDir(DIR_ELFS_CONFIG|MEM_EXTERNAL),L"sleepmode.bcfg")<0)
	{
		LoadConfigData(GetDir(DIR_ELFS_CONFIG|MEM_INTERNAL),L"sleepmode.bcfg");
	}
}
