public void SetDefaults() { CacheFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RomVault2_" + DBVersion.Version + ".Cache"); DatRoot = "DatRoot"; ScanLevel = eScanLevel.Level2; FixLevel = eFixLevel.TrrntZipLevel2; IgnoreFiles = new List <string> { "_ReadMe_.txt" }; ResetDirectories(); ReadConfig(); DirPathMap.Sort(); }
private static bool FullCompare(RvBase dbFile, RvBase testFile, bool secondPass, string fullDir = "", eScanLevel sLevel = eScanLevel.Level3) { Debug.WriteLine("Comparing Dat File " + dbFile.TreeFullName); Debug.WriteLine("Comparing File " + testFile.TreeFullName); int retv = DBHelper.CompareName(dbFile, testFile); if (retv != 0) return false; FileType dbfileType = dbFile.FileType; FileType dbtestFile = testFile.FileType; retv = Math.Sign(dbfileType.CompareTo(dbtestFile)); if (retv != 0) return false; // filetypes are now know to be the same // Dir's and Zip's are not deep scanned so matching here is done if ((dbfileType == FileType.Dir) || (dbfileType == FileType.Zip)) return true; RvFile dbFileF = (RvFile)dbFile; RvFile testFileF = (RvFile)testFile; if (dbFileF.Size != null && testFileF.Size != null) { retv = ULong.iCompare(dbFileF.Size, testFileF.Size); if (retv != 0) return false; } if (dbFileF.CRC != null && testFileF.CRC != null) { retv = ArrByte.iCompare(dbFileF.CRC, testFileF.CRC); if (retv != 0) return false; } if (dbFileF.SHA1 != null && testFileF.SHA1 != null) { retv = ArrByte.iCompare(dbFileF.SHA1, testFileF.SHA1); if (retv != 0) return false; } if (dbFileF.MD5 != null && testFileF.MD5 != null) { retv = ArrByte.iCompare(dbFileF.MD5, testFileF.MD5); if (retv != 0) return false; } if (dbFileF.SHA1CHD != null && testFileF.SHA1CHD != null) { retv = ArrByte.iCompare(dbFileF.SHA1CHD, testFileF.SHA1CHD); if (retv != 0) return false; } if (dbFileF.MD5CHD != null && testFileF.MD5CHD != null) { retv = ArrByte.iCompare(dbFileF.MD5CHD, testFileF.MD5CHD); if (retv != 0) return false; } // beyond here we only test files if (dbtestFile != FileType.File) return true; // if scanning at level 3 then we have already deep checked the file so all is OK. if (sLevel == eScanLevel.Level3) return true; // if we got this far then everything we have so far has matched, but that may not be enough. // now we see if we need to get any more info and try again. // if the file stamps do not match or the file in the DB we are comparing with has not been deep scanned // and the file we are scanning has not already been deep scanned, then we need to do a deep scan, and check the deep scan values // files are always deep scanned, so the test for IsDeepScanned(dbFileF) is probably not really needed here. if ((dbFileF.TimeStamp != testFileF.TimeStamp || !IsDeepScanned(dbFileF)) && !IsDeepScanned(testFileF)) { if (!secondPass) return false; DeepScanFile(fullDir, testFileF); if (dbFileF.CRC != null && testFileF.CRC != null) { retv = ArrByte.iCompare(dbFileF.CRC, testFileF.CRC); if (retv != 0) return false; } if (dbFileF.SHA1 != null && testFileF.SHA1 != null) { retv = ArrByte.iCompare(dbFileF.SHA1, testFileF.SHA1); if (retv != 0) return false; } if (dbFileF.MD5 != null && testFileF.MD5 != null) { retv = ArrByte.iCompare(dbFileF.MD5, testFileF.MD5); if (retv != 0) return false; } } // CHDman test, if we are only scanning at level 1 then don't do CHDman test so we are done. if (sLevel == eScanLevel.Level1) return true; if ((dbFileF.TimeStamp != testFileF.TimeStamp || (!IschdmanScanned(dbFileF)) && !IschdmanScanned(testFileF))) { ChdManCheck(fullDir, testFileF); } return true; }
private void ScanRoms(eScanLevel sd) { FileScanning.EScanLevel = sd; FrmProgressWindow progress = new FrmProgressWindow(this, "Scanning Dirs", FileScanning.ScanFiles); progress.ShowDialog(this); progress.Dispose(); DatSetSelected(DirTree.Selected); }
private void ReadConfig() { if (File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RomVault2cfg.xml"))) { using (StreamReader sr = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RomVault2cfg.xml"))) { System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(Program.rvSettings.GetType()); Program.rvSettings = (Settings)x.Deserialize(sr); } return; } if (File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RomVault2.cfg"))) { FileStream fs = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RomVault2.cfg"), FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); int ver = br.ReadInt32(); if (ver == 1) { DatRoot = br.ReadString(); ScanLevel = eScanLevel.Level1; FixLevel = (eFixLevel)br.ReadInt32(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } } if (ver == 2) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } } if (ver == 3) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); DebugLogsEnabled = br.ReadBoolean(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } } if (ver == 4) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); DebugLogsEnabled = br.ReadBoolean(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } CacheSaveTimerEnabled = br.ReadBoolean(); CacheSaveTimePeriod = br.ReadInt32(); } if (ver == 5) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); DebugLogsEnabled = br.ReadBoolean(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } CacheSaveTimerEnabled = br.ReadBoolean(); CacheSaveTimePeriod = br.ReadInt32(); DoubleCheckDelete = br.ReadBoolean(); } if (ver == 6) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); DebugLogsEnabled = br.ReadBoolean(); bool UserLongFilenames = br.ReadBoolean(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } CacheSaveTimerEnabled = br.ReadBoolean(); CacheSaveTimePeriod = br.ReadInt32(); DoubleCheckDelete = br.ReadBoolean(); } br.Close(); fs.Close(); } }
private static bool FullCompare(RvBase dbFile, RvBase testFile, bool secondPass, string fullDir = "", eScanLevel sLevel = eScanLevel.Level3) { Debug.WriteLine("Comparing Dat File " + dbFile.TreeFullName); Debug.WriteLine("Comparing File " + testFile.TreeFullName); int retv = DBHelper.CompareName(dbFile, testFile); if (retv != 0) { return(false); } FileType dbfileType = dbFile.FileType; FileType dbtestFile = testFile.FileType; retv = Math.Sign(dbfileType.CompareTo(dbtestFile)); if (retv != 0) { return(false); } // filetypes are now know to be the same // Dir's and Zip's are not deep scanned so matching here is done if ((dbfileType == FileType.Dir) || (dbfileType == FileType.Zip)) { return(true); } RvFile dbFileF = (RvFile)dbFile; RvFile testFileF = (RvFile)testFile; if (dbFileF.Size != null && testFileF.Size != null) { retv = ULong.iCompare(dbFileF.Size, testFileF.Size); if (retv != 0) { return(false); } } if (dbFileF.CRC != null && testFileF.CRC != null) { retv = ArrByte.iCompare(dbFileF.CRC, testFileF.CRC); if (retv != 0) { return(false); } } if (dbFileF.SHA1 != null && testFileF.SHA1 != null) { retv = ArrByte.iCompare(dbFileF.SHA1, testFileF.SHA1); if (retv != 0) { return(false); } } if (dbFileF.MD5 != null && testFileF.MD5 != null) { retv = ArrByte.iCompare(dbFileF.MD5, testFileF.MD5); if (retv != 0) { return(false); } } if (dbFileF.SHA1CHD != null && testFileF.SHA1CHD != null) { retv = ArrByte.iCompare(dbFileF.SHA1CHD, testFileF.SHA1CHD); if (retv != 0) { return(false); } } if (dbFileF.MD5CHD != null && testFileF.MD5CHD != null) { retv = ArrByte.iCompare(dbFileF.MD5CHD, testFileF.MD5CHD); if (retv != 0) { return(false); } } // beyond here we only test files if (dbtestFile != FileType.File) { return(true); } // if scanning at level 3 then we have already deep checked the file so all is OK. if (sLevel == eScanLevel.Level3) { return(true); } // if we got this far then everything we have so far has matched, but that may not be enough. // now we see if we need to get any more info and try again. // if the file stamps do not match or the file in the DB we are comparing with has not been deep scanned // and the file we are scanning has not already been deep scanned, then we need to do a deep scan, and check the deep scan values // files are always deep scanned, so the test for IsDeepScanned(dbFileF) is probably not really needed here. if ((dbFileF.TimeStamp != testFileF.TimeStamp || !IsDeepScanned(dbFileF)) && !IsDeepScanned(testFileF)) { if (!secondPass) { return(false); } DeepScanFile(fullDir, testFileF); if (dbFileF.CRC != null && testFileF.CRC != null) { retv = ArrByte.iCompare(dbFileF.CRC, testFileF.CRC); if (retv != 0) { return(false); } } if (dbFileF.SHA1 != null && testFileF.SHA1 != null) { retv = ArrByte.iCompare(dbFileF.SHA1, testFileF.SHA1); if (retv != 0) { return(false); } } if (dbFileF.MD5 != null && testFileF.MD5 != null) { retv = ArrByte.iCompare(dbFileF.MD5, testFileF.MD5); if (retv != 0) { return(false); } } } // CHDman test, if we are only scanning at level 1 then don't do CHDman test so we are done. if (sLevel == eScanLevel.Level1) { return(true); } if ((dbFileF.TimeStamp != testFileF.TimeStamp || (!IschdmanScanned(dbFileF)) && !IschdmanScanned(testFileF))) { ChdManCheck(fullDir, testFileF); } return(true); }
private static void ReadConfig() { if (!File.Exists(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RomVault2.cfg"))) { return; } FileStream fs = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RomVault2.cfg"), FileMode.Open, FileAccess.Read); BinaryReader br = new BinaryReader(fs); int ver = br.ReadInt32(); if (ver == 1) { DatRoot = br.ReadString(); ScanLevel = eScanLevel.Level1; FixLevel = (eFixLevel)br.ReadInt32(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } } if (ver == 2) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } } if (ver == 3) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); DebugLogsEnabled = br.ReadBoolean(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } } if (ver == 4) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); DebugLogsEnabled = br.ReadBoolean(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } CacheSaveTimerEnabled = br.ReadBoolean(); CacheSaveTimePeriod = br.ReadInt32(); } if (ver == 5) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); DebugLogsEnabled = br.ReadBoolean(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } CacheSaveTimerEnabled = br.ReadBoolean(); CacheSaveTimePeriod = br.ReadInt32(); DoubleCheckDelete = br.ReadBoolean(); } if (ver == 6) { DatRoot = br.ReadString(); ScanLevel = (eScanLevel)br.ReadInt32(); FixLevel = (eFixLevel)br.ReadInt32(); DebugLogsEnabled = br.ReadBoolean(); bool UserLongFilenames = br.ReadBoolean(); IgnoreFiles = new List <string>(); int c = br.ReadInt32(); for (int i = 0; i < c; i++) { IgnoreFiles.Add(br.ReadString()); } DirPathMap = new List <DirMap>(); c = br.ReadInt32(); for (int i = 0; i < c; i++) { DirPathMap.Add(new DirMap(br.ReadString(), br.ReadString())); } CacheSaveTimerEnabled = br.ReadBoolean(); CacheSaveTimePeriod = br.ReadInt32(); DoubleCheckDelete = br.ReadBoolean(); } br.Close(); fs.Close(); }