client/UserInterface/CheckLatestFiles.cpp

65 lines
1.5 KiB
C++

#include "StdAfx.h"
#if defined(CHECK_LATEST_DATA_FILES)
#include "CheckLatestFiles.h"
#include "resource.h"
static struct SCHECKFILELIST
{
LPCSTR szFileName;
DWORD dwCRC32;
ULONGLONG ullSize;
} s_astCRC32FileList[] = {
#include "CRC32_inc.h"
{ NULL, 0 }
};
static bool gs_bQuit = false;
bool CheckLatestFiles_PollEvent( void )
{
return gs_bQuit;
}
// µ¥ÀÌŸ ÆÄÀÏ CRC32 °ª °Ë»çÇϱâ
bool CheckFileCRC32( LPCSTR szFileName, DWORD dwCRC32 )
{
char szMessage[256];
if (_access( szFileName, 4 ) != 0) {
_snprintf(szMessage, sizeof(szMessage)/sizeof(szMessage[0])-1, ApplicationStringTable_GetStringz(IDS_ERR_CANNOT_READ_FILE, "ERR_CANNOT_READ_FILE"), szFileName);
ApplicationSetErrorString(szMessage);
return false;
}
DWORD dwLocalCRC32 = GetFileCRC32(szFileName);
if (dwCRC32 != dwLocalCRC32) {
_snprintf(szMessage, sizeof(szMessage)/sizeof(szMessage[0])-1, ApplicationStringTable_GetStringz(IDS_ERR_NOT_LATEST_FILE, "ERR_NOT_LATEST_FILE"), szFileName);
ApplicationSetErrorString(szMessage);
return false;
}
return true;
}
UINT CALLBACK CheckLatestFilesEntry(void * pThis)
{
::Sleep( 500 );
for( int i=0; s_astCRC32FileList[i].szFileName != NULL; i++ ) {
if (false == CheckFileCRC32(s_astCRC32FileList[i].szFileName, s_astCRC32FileList[i].dwCRC32)) {
gs_bQuit = true;
break;
}
}
return 0;
}
bool CheckLatestFiles( void )
{
unsigned int uThreadID = 0;
HANDLE hThread = (HANDLE) _beginthreadex(NULL, 0, CheckLatestFilesEntry, NULL, 0, &uThreadID);
::SetThreadPriority(hThread, THREAD_PRIORITY_LOWEST);
return true;
}
#endif