Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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();
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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();
        }