#include "stdafx.h" #include "CrcMaker.h" #include "CrcMakerDlg.h" #include "crcmakerdlg.h" #include "sfind.h" #include "crc32.h" class CProcessDirectory : public sys_CThread { CProcessDirectory(const char *dirpath, CCrcMakerDlg &Dlg) : m_dlg(Dlg) { m_dirpath = dirpath; } virtual int Main(); CString m_dirpath; CCrcMakerDlg &m_dlg; }; CProcessDirectory::Main() { return 0; } /* ** Recursivly scans the directory and create a crc checksum list */ void CCrcMakerDlg::ProcessDirectory( const char *dPath ) { CWaitCursor cw; char dirpath[256]; strcpy(dirpath,dPath); int l = strlen(dirpath); if( l > 0 ){ if( dirpath[l-1] == '/' || dirpath[l-1] == '\\' ) dirpath[l-1] = 0; } SFind Find("*.*", (char*)dirpath); m_list.AddString( CString("Processing directory ")+dirpath); CStdioFile crcSaveFile( CString(dirpath)+"\\crcfilelist.txt", CFile::modeWrite|CFile::modeCreate); int cnt=0; while (Find.Found()){ if( Find.IsFolder() ){ //ProcessSubDirectory(); } else { //Thumbs.db ignorieren if( 0 == stricmp(Find.JustFileName(), "Thumbs.db") ) { CString msg; msg.Format("Ignoring %s",Find.FileName()); m_list.AddString(msg); continue; } CString crc; int size; crc.Format("%x", CRC32::GetFileCRC(Find.JustFileName(),(char*)dirpath,&size) ); CString crcstring; crcstring.Format("%s %s %d", Find.JustFileName(), crc, size ); crcSaveFile.WriteString(crcstring); crcSaveFile.Write("\n",1); crcstring.Format("%d",size); //listctrl anzeige m_listctrl.InsertItem( LVIF_TEXT, cnt, "", 0 , 0, 0, 0 ); m_listctrl.SetItemText( cnt, 0, Find.JustFileName()); m_listctrl.SetItemText( cnt, 1, crc ); m_listctrl.SetItemText( cnt, 2, crcstring ); cnt++; } } CString msg; msg.Format("Saved %d crc entries to %s",cnt,crcSaveFile.GetFileName()); m_list.AddString(msg); crcSaveFile.Close(); }