ParCheckerMock::EFileStatus ParCheckerMock::FindFileCrc(const char* filename, uint32* crc, SegmentList* segments) { std::ifstream sm((TestUtil::WorkingDir() + "/crc.txt").c_str()); std::string smfilename, smcrc; while (!sm.eof()) { sm >> smfilename >> smcrc; if (smfilename == filename) { *crc = strtoul(smcrc.c_str(), nullptr, 16); uint32 realCrc = CalcFileCrc((TestUtil::WorkingDir() + "/" + filename).c_str()); return *crc == realCrc ? ParChecker::fsSuccess : ParChecker::fsUnknown; } } return ParChecker::fsUnknown; }
int CPatchDlg::CalcCrc( CString fileName ) { FILE *pFile = NULL; char szFilePath[MAX_PATH] = {0}; ::WideCharToMultiByte( CP_ACP, 0, fileName, fileName.GetLength(), szFilePath, MAX_PATH-1, NULL, NULL ); DWORD dwCrc = 0; if(PathFileExists(fileName)) { pFile = fopen(szFilePath, "rb"); if ( pFile ) { dwCrc = CalcFileCrc( pFile ); fclose( pFile ); } } return dwCrc; }