diff --git a/Deheader/Headerer.cs b/Deheader/Headerer.cs index a9c46665..b3ce7a54 100644 --- a/Deheader/Headerer.cs +++ b/Deheader/Headerer.cs @@ -255,7 +255,7 @@ namespace SabreTools // Now add the information to the database if it's not already there Rom rom = RomTools.GetSingleFileInfo(newfile); - AddHeaderToDatabase(hstr, rom.SHA1, type); + AddHeaderToDatabase(hstr, rom.HashData.SHA1, type); } return true; @@ -314,7 +314,7 @@ namespace SabreTools // Then try to pull the corresponding headers from the database string header = ""; - string query = @"SELECT header, type FROM data WHERE sha1='" + rom.SHA1 + "'"; + string query = @"SELECT header, type FROM data WHERE sha1='" + rom.HashData.SHA1 + "'"; using (SqliteConnection dbc = new SqliteConnection(_connectionString)) { dbc.Open(); diff --git a/SabreTools.Helper/Data/Structs.cs b/SabreTools.Helper/Data/Structs.cs index f8395f7b..0baf8d42 100644 --- a/SabreTools.Helper/Data/Structs.cs +++ b/SabreTools.Helper/Data/Structs.cs @@ -3,6 +3,29 @@ using System.Collections.Generic; namespace SabreTools.Helper { + /// + /// Intermediate struct for holding and processing hash data + /// + public struct HashData : IComparable, IEquatable + { + public long Size; + public string CRC; + public string MD5; + public string SHA1; + + // Needs implementation + public int CompareTo(object obj) + { + return 0; + } + + // Needs implementation + public bool Equals(HashData other) + { + return true; + } + } + /// /// Intermediate struct for holding and processing rom data /// @@ -12,10 +35,7 @@ namespace SabreTools.Helper public string GameDescription; public string Name; public string Type; - public long Size; - public string CRC; - public string MD5; - public string SHA1; + public HashData HashData; public DupeType Dupe; public bool Nodump; public string Date; diff --git a/SabreTools.Helper/Tools/ArchiveTools.cs b/SabreTools.Helper/Tools/ArchiveTools.cs index 4204150e..736d9dbc 100644 --- a/SabreTools.Helper/Tools/ArchiveTools.cs +++ b/SabreTools.Helper/Tools/ArchiveTools.cs @@ -539,8 +539,11 @@ namespace SabreTools.Helper Type = "rom", Name = reader.Entry.Key, Game = gamename, - Size = (size == 0 ? reader.Entry.Size : size), - CRC = (crc == "" ? reader.Entry.Crc.ToString("X").ToLowerInvariant() : crc), + HashData = new HashData + { + Size = (size == 0 ? reader.Entry.Size : size), + CRC = (crc == "" ? reader.Entry.Crc.ToString("X").ToLowerInvariant() : crc), + }, }); } } @@ -617,10 +620,13 @@ namespace SabreTools.Helper Type = "rom", Game = Path.GetFileNameWithoutExtension(input).ToLowerInvariant(), Name = Path.GetFileNameWithoutExtension(input).ToLowerInvariant(), - Size = extractedsize, - CRC = gzcrc.ToLowerInvariant(), - MD5 = gzmd5.ToLowerInvariant(), - SHA1 = Path.GetFileNameWithoutExtension(input).ToLowerInvariant(), + HashData = new HashData + { + Size = extractedsize, + CRC = gzcrc.ToLowerInvariant(), + MD5 = gzmd5.ToLowerInvariant(), + SHA1 = Path.GetFileNameWithoutExtension(input).ToLowerInvariant(), + }, }; return rom; @@ -656,7 +662,7 @@ namespace SabreTools.Helper Rom rom = RomTools.GetSingleFileInfo(input); // If it doesn't exist, create the output file and then write - string outfile = Path.Combine(outdir, rom.SHA1 + ".gz"); + string outfile = Path.Combine(outdir, rom.HashData.SHA1 + ".gz"); using (FileStream inputstream = new FileStream(input, FileMode.Open)) using (GZipStream output = new GZipStream(File.Open(outfile, FileMode.Create, FileAccess.Write), CompressionMode.Compress)) { @@ -670,9 +676,9 @@ namespace SabreTools.Helper { // Write standard header and TGZ info byte[] data = Constants.TorrentGZHeader - .Concat(StringToByteArray(rom.MD5)) // MD5 - .Concat(StringToByteArray(rom.CRC)) // CRC - .Concat(BitConverter.GetBytes(rom.Size).Reverse().ToArray()) // Long size (Mirrored) + .Concat(StringToByteArray(rom.HashData.MD5)) // MD5 + .Concat(StringToByteArray(rom.HashData.CRC)) // CRC + .Concat(BitConverter.GetBytes(rom.HashData.Size).Reverse().ToArray()) // Long size (Mirrored) .ToArray(); sw.Write(data); @@ -698,7 +704,7 @@ namespace SabreTools.Helper // If we're in romba mode, create the subfolder and move the file if (romba) { - string subfolder = Path.Combine(rom.SHA1.Substring(0, 2), rom.SHA1.Substring(2, 2), rom.SHA1.Substring(4, 2), rom.SHA1.Substring(6, 2)); + string subfolder = Path.Combine(rom.HashData.SHA1.Substring(0, 2), rom.HashData.SHA1.Substring(2, 2), rom.HashData.SHA1.Substring(4, 2), rom.HashData.SHA1.Substring(6, 2)); outdir = Path.Combine(outdir, subfolder); if (!Directory.Exists(outdir)) { diff --git a/SabreTools.Helper/Tools/DatTools.cs b/SabreTools.Helper/Tools/DatTools.cs index fd230395..c0c73619 100644 --- a/SabreTools.Helper/Tools/DatTools.cs +++ b/SabreTools.Helper/Tools/DatTools.cs @@ -209,16 +209,16 @@ namespace SabreTools.Helper rom.Name = gc[i].Replace("\"", ""); break; case "size": - Int64.TryParse(gc[i].Replace("\"", ""), out rom.Size); + Int64.TryParse(gc[i].Replace("\"", ""), out rom.HashData.Size); break; case "crc": - rom.CRC = gc[i].Replace("\"", "").ToLowerInvariant(); + rom.HashData.CRC = gc[i].Replace("\"", "").ToLowerInvariant(); break; case "md5": - rom.MD5 = gc[i].Replace("\"", "").ToLowerInvariant(); + rom.HashData.MD5 = gc[i].Replace("\"", "").ToLowerInvariant(); break; case "sha1": - rom.SHA1 = gc[i].Replace("\"", "").ToLowerInvariant(); + rom.HashData.SHA1 = gc[i].Replace("\"", "").ToLowerInvariant(); break; case "flags": if (gc[i].Replace("\"", "").ToLowerInvariant() == "nodump") @@ -266,16 +266,16 @@ namespace SabreTools.Helper rom.Name = val; break; case "size": - Int64.TryParse(val, out rom.Size); + Int64.TryParse(val, out rom.HashData.Size); break; case "crc": - rom.CRC = val.ToLowerInvariant(); + rom.HashData.CRC = val.ToLowerInvariant(); break; case "md5": - rom.MD5 = val.ToLowerInvariant(); + rom.HashData.MD5 = val.ToLowerInvariant(); break; case "sha1": - rom.SHA1 = val.ToLowerInvariant(); + rom.HashData.SHA1 = val.ToLowerInvariant(); break; case "flags": if (val.ToLowerInvariant() == "nodump") @@ -292,20 +292,20 @@ namespace SabreTools.Helper } // Sanitize the hashes from null, hex sizes, and "true blank" strings - rom.CRC = RomTools.CleanHashData(rom.CRC, Constants.CRCLength); - rom.MD5 = RomTools.CleanHashData(rom.MD5, Constants.MD5Length); - rom.SHA1 = RomTools.CleanHashData(rom.SHA1, Constants.SHA1Length); + rom.HashData.CRC = RomTools.CleanHashData(rom.HashData.CRC, Constants.CRCLength); + rom.HashData.MD5 = RomTools.CleanHashData(rom.HashData.MD5, Constants.MD5Length); + rom.HashData.SHA1 = RomTools.CleanHashData(rom.HashData.SHA1, Constants.SHA1Length); // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info - if (rom.Type == "rom" && (rom.Size == 0 || rom.Size == -1) && ((rom.CRC == Constants.CRCZero || rom.CRC == "") || rom.MD5 == Constants.MD5Zero || rom.SHA1 == Constants.SHA1Zero)) + if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero)) { - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; } // If the file has no size and it's not the above case, skip and log - else if (rom.Type == "rom" && (rom.Size == 0 || rom.Size == -1)) + else if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1)) { logger.Warning("Incomplete entry for \"" + rom.Name + "\" will be output as nodump"); rom.Nodump = true; @@ -314,11 +314,11 @@ namespace SabreTools.Helper // If we have a disk, make sure that the value for size is -1 if (rom.Type == "disk") { - rom.Size = -1; + rom.HashData.Size = -1; } // Now add the rom to the dictionary - string key = rom.Size + "-" + rom.CRC; + string key = rom.HashData.Size + "-" + rom.HashData.CRC; if (datdata.Roms.ContainsKey(key)) { datdata.Roms[key].Add(rom); @@ -333,10 +333,10 @@ namespace SabreTools.Helper // Add statistical data datdata.RomCount += (rom.Type == "rom" ? 1 : 0); datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); - datdata.TotalSize += (rom.Nodump ? 0 : rom.Size); - datdata.CRCCount += (String.IsNullOrEmpty(rom.CRC) ? 0 : 1); - datdata.MD5Count += (String.IsNullOrEmpty(rom.MD5) ? 0 : 1); - datdata.SHA1Count += (String.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); + datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); + datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); + datdata.SHA1Count += (String.IsNullOrEmpty(rom.HashData.SHA1) ? 0 : 1); datdata.NodumpCount += (rom.Nodump ? 1 : 0); } // If the line is anything but a rom or disk and we're in a block @@ -568,26 +568,29 @@ namespace SabreTools.Helper Game = rominfo[3], GameDescription = rominfo[4], Name = rominfo[5], - CRC = rominfo[6].ToLowerInvariant(), - Size = Int64.Parse(rominfo[7]), + HashData = new HashData + { + CRC = rominfo[6].ToLowerInvariant(), + Size = Int64.Parse(rominfo[7]), + }, Metadata = new SourceMetadata { SystemID = sysid, SourceID = srcid }, }; // Sanitize the hashes from null, hex sizes, and "true blank" strings - rom.CRC = RomTools.CleanHashData(rom.CRC, Constants.CRCLength); - rom.MD5 = RomTools.CleanHashData(rom.MD5, Constants.MD5Length); - rom.SHA1 = RomTools.CleanHashData(rom.SHA1, Constants.SHA1Length); + rom.HashData.CRC = RomTools.CleanHashData(rom.HashData.CRC, Constants.CRCLength); + rom.HashData.MD5 = RomTools.CleanHashData(rom.HashData.MD5, Constants.MD5Length); + rom.HashData.SHA1 = RomTools.CleanHashData(rom.HashData.SHA1, Constants.SHA1Length); // If we have a rom and it's missing size AND the hashes match a 0-byte file, fill in the rest of the info - if (rom.Type == "rom" && (rom.Size == 0 || rom.Size == -1) && ((rom.CRC == Constants.CRCZero || rom.CRC == "") || rom.MD5 == Constants.MD5Zero || rom.SHA1 == Constants.SHA1Zero)) + if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1) && ((rom.HashData.CRC == Constants.CRCZero || rom.HashData.CRC == "") || rom.HashData.MD5 == Constants.MD5Zero || rom.HashData.SHA1 == Constants.SHA1Zero)) { - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; } // If the file has no size and it's not the above case, skip and log - else if (rom.Type == "rom" && (rom.Size == 0 || rom.Size == -1)) + else if (rom.Type == "rom" && (rom.HashData.Size == 0 || rom.HashData.Size == -1)) { logger.Warning("Incomplete entry for \"" + rom.Name + "\" will be output as nodump"); rom.Nodump = true; @@ -596,11 +599,11 @@ namespace SabreTools.Helper // If we have a disk, make sure that the value for size is -1 if (rom.Type == "disk") { - rom.Size = -1; + rom.HashData.Size = -1; } // Add the new rom - string key = rom.Size + "-" + rom.CRC; + string key = rom.HashData.Size + "-" + rom.HashData.CRC; if (datdata.Roms.ContainsKey(key)) { datdata.Roms[key].Add(rom); @@ -615,10 +618,10 @@ namespace SabreTools.Helper // Add statistical data datdata.RomCount += (rom.Type == "rom" ? 1 : 0); datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); - datdata.TotalSize += (rom.Nodump ? 0 : rom.Size); - datdata.CRCCount += (String.IsNullOrEmpty(rom.CRC) ? 0 : 1); - datdata.MD5Count += (String.IsNullOrEmpty(rom.MD5) ? 0 : 1); - datdata.SHA1Count += (String.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); + datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); + datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); + datdata.SHA1Count += (String.IsNullOrEmpty(rom.HashData.SHA1) ? 0 : 1); datdata.NodumpCount += (rom.Nodump ? 1 : 0); } } @@ -674,13 +677,16 @@ namespace SabreTools.Helper Name = "null", Game = tempgame, GameDescription = tempgame, - Size = -1, - CRC = "null", - MD5 = "null", - SHA1 = "null", + HashData = new HashData + { + Size = -1, + CRC = "null", + MD5 = "null", + SHA1 = "null", + }, }; - key = rom.Size + "-" + rom.CRC; + key = rom.HashData.Size + "-" + rom.HashData.CRC; if (datdata.Roms.ContainsKey(key)) { datdata.Roms[key].Add(rom); @@ -695,10 +701,10 @@ namespace SabreTools.Helper // Add statistical data datdata.RomCount += (rom.Type == "rom" ? 1 : 0); datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); - datdata.TotalSize += (rom.Nodump ? 0 : rom.Size); - datdata.CRCCount += (String.IsNullOrEmpty(rom.CRC) ? 0 : 1); - datdata.MD5Count += (String.IsNullOrEmpty(rom.MD5) ? 0 : 1); - datdata.SHA1Count += (String.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); + datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); + datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); + datdata.SHA1Count += (String.IsNullOrEmpty(rom.HashData.SHA1) ? 0 : 1); datdata.NodumpCount += (rom.Nodump ? 1 : 0); } @@ -1067,7 +1073,7 @@ namespace SabreTools.Helper { int index = datdata.Roms[key].Count() - 1; Rom lastrom = datdata.Roms[key][index]; - lastrom.Size += size; + lastrom.HashData.Size += size; datdata.Roms[key].RemoveAt(index); datdata.Roms[key].Add(lastrom); continue; @@ -1118,10 +1124,13 @@ namespace SabreTools.Helper GameDescription = gamedesc, Name = subreader.GetAttribute("name"), Type = subreader.Name, - Size = size, - CRC = crc, - MD5 = md5, - SHA1 = sha1, + HashData = new HashData + { + Size = size, + CRC = crc, + MD5 = md5, + SHA1 = sha1, + }, Nodump = nodump, Date = date, Metadata = new SourceMetadata { SystemID = sysid, System = filename, SourceID = srcid }, @@ -1141,10 +1150,10 @@ namespace SabreTools.Helper // Add statistical data datdata.RomCount += (rom.Type == "rom" ? 1 : 0); datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); - datdata.TotalSize += (rom.Nodump ? 0 : rom.Size); - datdata.CRCCount += (String.IsNullOrEmpty(rom.CRC) ? 0 : 1); - datdata.MD5Count += (String.IsNullOrEmpty(rom.MD5) ? 0 : 1); - datdata.SHA1Count += (String.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); + datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); + datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); + datdata.SHA1Count += (String.IsNullOrEmpty(rom.HashData.SHA1) ? 0 : 1); datdata.NodumpCount += (rom.Nodump ? 1 : 0); } // Otherwise, log that it wasn't added @@ -1171,13 +1180,16 @@ namespace SabreTools.Helper Name = "null", Game = tempname, GameDescription = tempname, - Size = -1, - CRC = "null", - MD5 = "null", - SHA1 = "null", + HashData = new HashData + { + Size = -1, + CRC = "null", + MD5 = "null", + SHA1 = "null", + } }; - key = rom.Size + "-" + rom.CRC; + key = rom.HashData.Size + "-" + rom.HashData.CRC; if (datdata.Roms.ContainsKey(key)) { datdata.Roms[key].Add(rom); @@ -1192,10 +1204,10 @@ namespace SabreTools.Helper // Add statistical data datdata.RomCount += (rom.Type == "rom" ? 1 : 0); datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); - datdata.TotalSize += (rom.Nodump ? 0 : rom.Size); - datdata.CRCCount += (String.IsNullOrEmpty(rom.CRC) ? 0 : 1); - datdata.MD5Count += (String.IsNullOrEmpty(rom.MD5) ? 0 : 1); - datdata.SHA1Count += (String.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); + datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); + datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); + datdata.SHA1Count += (String.IsNullOrEmpty(rom.HashData.SHA1) ? 0 : 1); datdata.NodumpCount += (rom.Nodump ? 1 : 0); } @@ -1286,7 +1298,7 @@ namespace SabreTools.Helper { int index = datdata.Roms[key].Count() - 1; Rom lastrom = datdata.Roms[key][index]; - lastrom.Size += size; + lastrom.HashData.Size += size; datdata.Roms[key].RemoveAt(index); datdata.Roms[key].Add(lastrom); continue; @@ -1345,10 +1357,13 @@ namespace SabreTools.Helper Game = tempname, Name = xtr.GetAttribute("name"), Type = xtr.GetAttribute("type"), - Size = size, - CRC = crc, - MD5 = md5, - SHA1 = sha1, + HashData = new HashData + { + Size = size, + CRC = crc, + MD5 = md5, + SHA1 = sha1, + }, Nodump = nodump, Date = date, Metadata = new SourceMetadata { SystemID = sysid, System = filename, SourceID = srcid }, @@ -1368,10 +1383,10 @@ namespace SabreTools.Helper // Add statistical data datdata.RomCount += (rom.Type == "rom" ? 1 : 0); datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); - datdata.TotalSize += (rom.Nodump ? 0 : rom.Size); - datdata.CRCCount += (String.IsNullOrEmpty(rom.CRC) ? 0 : 1); - datdata.MD5Count += (String.IsNullOrEmpty(rom.MD5) ? 0 : 1); - datdata.SHA1Count += (String.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); + datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); + datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); + datdata.SHA1Count += (String.IsNullOrEmpty(rom.HashData.SHA1) ? 0 : 1); datdata.NodumpCount += (rom.Nodump ? 1 : 0); } xtr.Read(); @@ -1508,7 +1523,7 @@ namespace SabreTools.Helper foreach (Rom rom in newroms) { count++; - string key = rom.Size + "-" + rom.CRC; + string key = rom.HashData.Size + "-" + rom.HashData.CRC; if (sortable.ContainsKey(key)) { sortable[key].Add(rom); @@ -1831,17 +1846,17 @@ namespace SabreTools.Helper } // Filter on rom size - if (seq != -1 && rom.Size != seq) + if (seq != -1 && rom.HashData.Size != seq) { continue; } else { - if (sgt != -1 && rom.Size < sgt) + if (sgt != -1 && rom.HashData.Size < sgt) { continue; } - if (slt != -1 && rom.Size > slt) + if (slt != -1 && rom.HashData.Size > slt) { continue; } @@ -1850,15 +1865,15 @@ namespace SabreTools.Helper // Filter on crc if (crc != "") { - if (crc.StartsWith("*") && crc.EndsWith("*") && !rom.CRC.ToLowerInvariant().Contains(crc.ToLowerInvariant().Replace("*", ""))) + if (crc.StartsWith("*") && crc.EndsWith("*") && !rom.HashData.CRC.ToLowerInvariant().Contains(crc.ToLowerInvariant().Replace("*", ""))) { continue; } - else if (crc.StartsWith("*") && !rom.CRC.EndsWith(crc.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + else if (crc.StartsWith("*") && !rom.HashData.CRC.EndsWith(crc.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) { continue; } - else if (crc.EndsWith("*") && !rom.CRC.StartsWith(crc.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + else if (crc.EndsWith("*") && !rom.HashData.CRC.StartsWith(crc.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) { continue; } @@ -1867,15 +1882,15 @@ namespace SabreTools.Helper // Filter on md5 if (md5 != "") { - if (md5.StartsWith("*") && md5.EndsWith("*") && !rom.MD5.ToLowerInvariant().Contains(md5.ToLowerInvariant().Replace("*", ""))) + if (md5.StartsWith("*") && md5.EndsWith("*") && !rom.HashData.MD5.ToLowerInvariant().Contains(md5.ToLowerInvariant().Replace("*", ""))) { continue; } - else if (md5.StartsWith("*") && !rom.MD5.EndsWith(md5.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + else if (md5.StartsWith("*") && !rom.HashData.MD5.EndsWith(md5.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) { continue; } - else if (md5.EndsWith("*") && !rom.MD5.StartsWith(md5.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + else if (md5.EndsWith("*") && !rom.HashData.MD5.StartsWith(md5.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) { continue; } @@ -1884,15 +1899,15 @@ namespace SabreTools.Helper // Filter on sha1 if (sha1 != "") { - if (sha1.StartsWith("*") && sha1.EndsWith("*") && !rom.SHA1.ToLowerInvariant().Contains(sha1.ToLowerInvariant().Replace("*", ""))) + if (sha1.StartsWith("*") && sha1.EndsWith("*") && !rom.HashData.SHA1.ToLowerInvariant().Contains(sha1.ToLowerInvariant().Replace("*", ""))) { continue; } - else if (sha1.StartsWith("*") && !rom.SHA1.EndsWith(sha1.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + else if (sha1.StartsWith("*") && !rom.HashData.SHA1.EndsWith(sha1.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) { continue; } - else if (sha1.EndsWith("*") && !rom.SHA1.StartsWith(sha1.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) + else if (sha1.EndsWith("*") && !rom.HashData.SHA1.StartsWith(sha1.Replace("*", ""), StringComparison.InvariantCultureIgnoreCase)) { continue; } diff --git a/SabreTools.Helper/Tools/Output.cs b/SabreTools.Helper/Tools/Output.cs index c7c3c11f..4a005875 100644 --- a/SabreTools.Helper/Tools/Output.cs +++ b/SabreTools.Helper/Tools/Output.cs @@ -115,7 +115,7 @@ namespace SabreTools.Helper } // If we have a "null" game (created by DATFromDir or something similar), log it to file - if (rom.Name == "null" && rom.Size == -1 && rom.CRC == "null" && rom.MD5 == "null" && rom.SHA1 == "null") + if (rom.Name == "null" && rom.HashData.Size == -1 && rom.HashData.CRC == "null" && rom.HashData.MD5 == "null" && rom.HashData.SHA1 == "null") { logger.Log("Empty folder found: " + rom.Game); @@ -123,10 +123,10 @@ namespace SabreTools.Helper if (datdata.OutputFormat != OutputFormat.SabreDat && datdata.OutputFormat != OutputFormat.MissFile) { rom.Name = "-"; - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; } // Otherwise, set the new path and such, write out, and continue @@ -422,10 +422,10 @@ namespace SabreTools.Helper { case OutputFormat.ClrMamePro: state += "\t" + rom.Type + " ( name \"" + rom.Name + "\"" + - (rom.Size != -1 ? " size " + rom.Size : "") + - (!String.IsNullOrEmpty(rom.CRC) ? " crc " + rom.CRC.ToLowerInvariant() : "") + - (!String.IsNullOrEmpty(rom.MD5) ? " md5 " + rom.MD5.ToLowerInvariant() : "") + - (!String.IsNullOrEmpty(rom.SHA1) ? " sha1 " + rom.SHA1.ToLowerInvariant() : "") + + (rom.HashData.Size != -1 ? " size " + rom.HashData.Size : "") + + (!String.IsNullOrEmpty(rom.HashData.CRC) ? " crc " + rom.HashData.CRC.ToLowerInvariant() : "") + + (!String.IsNullOrEmpty(rom.HashData.MD5) ? " md5 " + rom.HashData.MD5.ToLowerInvariant() : "") + + (!String.IsNullOrEmpty(rom.HashData.SHA1) ? " sha1 " + rom.HashData.SHA1.ToLowerInvariant() : "") + (!String.IsNullOrEmpty(rom.Date) ? " date \"" + rom.Date + "\"" : "") + (rom.Nodump ? " flags nodump" : "") + " )\n"; @@ -435,17 +435,17 @@ namespace SabreTools.Helper string post = (datdata.Quotes ? "\"" : "") + datdata.Postfix; // Check for special strings in prefix and postfix - pre = pre.Replace("%crc%", rom.CRC).Replace("%md5%", rom.MD5).Replace("%sha1%", rom.SHA1).Replace("%size%", rom.Size.ToString()); - post = post.Replace("%crc%", rom.CRC).Replace("%md5%", rom.MD5).Replace("%sha1%", rom.SHA1).Replace("%size%", rom.Size.ToString()); + pre = pre.Replace("%crc%", rom.HashData.CRC).Replace("%md5%", rom.HashData.MD5).Replace("%sha1%", rom.HashData.SHA1).Replace("%size%", rom.HashData.Size.ToString()); + post = post.Replace("%crc%", rom.HashData.CRC).Replace("%md5%", rom.HashData.MD5).Replace("%sha1%", rom.HashData.SHA1).Replace("%size%", rom.HashData.Size.ToString()); // If we're in Romba mode, the state is consistent if (datdata.Romba) { // We can only write out if there's a SHA-1 - if (rom.SHA1 != "") + if (rom.HashData.SHA1 != "") { - string name = rom.SHA1.Substring(0, 2) + "/" + rom.SHA1.Substring(2, 2) + "/" + rom.SHA1.Substring(4, 2) + "/" + - rom.SHA1.Substring(6, 2) + "/" + rom.SHA1 + ".gz"; + string name = rom.HashData.SHA1.Substring(0, 2) + "/" + rom.HashData.SHA1.Substring(2, 2) + "/" + rom.HashData.SHA1.Substring(4, 2) + "/" + + rom.HashData.SHA1.Substring(6, 2) + "/" + rom.HashData.SHA1 + ".gz"; state += pre + name + post + "\n"; } } @@ -453,16 +453,16 @@ namespace SabreTools.Helper else if (datdata.TSV == true) { string inline = "\"" + datdata.FileName + "\"\t\"" + datdata.Name + "\"\t\"" + datdata.Description + "\"\t\"" + rom.Game + "\"\t\"" + rom.Game + "\"\t\"" + - rom.Type + "\"\t\"" + (rom.Type == "rom" ? rom.Name : "") + "\"\t\"" + (rom.Type == "disk" ? rom.Name : "") + "\"\t\"" + rom.Size + "\"\t\"" + - rom.CRC + "\"\t\"" + rom.MD5 + "\"\t\"" + rom.SHA1 + "\"\t" + (rom.Nodump ? "\"Nodump\"" : "\"\""); + rom.Type + "\"\t\"" + (rom.Type == "rom" ? rom.Name : "") + "\"\t\"" + (rom.Type == "disk" ? rom.Name : "") + "\"\t\"" + rom.HashData.Size + "\"\t\"" + + rom.HashData.CRC + "\"\t\"" + rom.HashData.MD5 + "\"\t\"" + rom.HashData.SHA1 + "\"\t" + (rom.Nodump ? "\"Nodump\"" : "\"\""); state += pre + inline + post + "\n"; } // If we're in CSV mode, similarly the state is consistent else if (datdata.TSV == false) { string inline = "\"" + datdata.FileName + "\",\"" + datdata.Name + "\",\"" + datdata.Description + "\",\"" + rom.Game + "\",\"" + rom.Game + "\",\"" + - rom.Type + "\",\"" + (rom.Type == "rom" ? rom.Name : "") + "\",\"" + (rom.Type == "disk" ? rom.Name : "") + "\",\"" + rom.Size + "\",\"" + - rom.CRC + "\",\"" + rom.MD5 + "\",\"" + rom.SHA1 + "\"," + (rom.Nodump ? "\"Nodump\"" : "\"\""); + rom.Type + "\",\"" + (rom.Type == "rom" ? rom.Name : "") + "\",\"" + (rom.Type == "disk" ? rom.Name : "") + "\",\"" + rom.HashData.Size + "\",\"" + + rom.HashData.CRC + "\",\"" + rom.HashData.MD5 + "\",\"" + rom.HashData.SHA1 + "\"," + (rom.Nodump ? "\"Nodump\"" : "\"\""); state += pre + inline + post + "\n"; } // Otherwise, use any flags @@ -499,8 +499,8 @@ namespace SabreTools.Helper state += "¬¬¬" + HttpUtility.HtmlEncode(rom.Game) + "¬" + HttpUtility.HtmlEncode((String.IsNullOrEmpty(rom.GameDescription) ? rom.Game : rom.GameDescription)) + "¬" + HttpUtility.HtmlEncode(rom.Name) + - "¬" + rom.CRC.ToLowerInvariant() + - "¬" + (rom.Size != -1 ? rom.Size.ToString() : "") + "¬¬¬\n"; + "¬" + rom.HashData.CRC.ToLowerInvariant() + + "¬" + (rom.HashData.Size != -1 ? rom.HashData.Size.ToString() : "") + "¬¬¬\n"; break; case OutputFormat.SabreDat: string prefix = ""; @@ -511,10 +511,10 @@ namespace SabreTools.Helper state += prefix; state += "\n" + prefix + "\t\n" + prefix + "\t\t\n" + @@ -524,10 +524,10 @@ namespace SabreTools.Helper break; case OutputFormat.Xml: state += "\t\t<" + rom.Type + " name=\"" + HttpUtility.HtmlEncode(rom.Name) + "\"" + - (rom.Size != -1 ? " size=\"" + rom.Size + "\"" : "") + - (!String.IsNullOrEmpty(rom.CRC) ? " crc=\"" + rom.CRC.ToLowerInvariant() + "\"" : "") + - (!String.IsNullOrEmpty(rom.MD5) ? " md5=\"" + rom.MD5.ToLowerInvariant() + "\"" : "") + - (!String.IsNullOrEmpty(rom.SHA1) ? " sha1=\"" + rom.SHA1.ToLowerInvariant() + "\"" : "") + + (rom.HashData.Size != -1 ? " size=\"" + rom.HashData.Size + "\"" : "") + + (!String.IsNullOrEmpty(rom.HashData.CRC) ? " crc=\"" + rom.HashData.CRC.ToLowerInvariant() + "\"" : "") + + (!String.IsNullOrEmpty(rom.HashData.MD5) ? " md5=\"" + rom.HashData.MD5.ToLowerInvariant() + "\"" : "") + + (!String.IsNullOrEmpty(rom.HashData.SHA1) ? " sha1=\"" + rom.HashData.SHA1.ToLowerInvariant() + "\"" : "") + (!String.IsNullOrEmpty(rom.Date) ? " date=\"" + rom.Date + "\"" : "") + (rom.Nodump ? " status=\"nodump\"" : "") + "/>\n"; diff --git a/SabreTools.Helper/Tools/RomTools.cs b/SabreTools.Helper/Tools/RomTools.cs index 36303f34..20ecf11b 100644 --- a/SabreTools.Helper/Tools/RomTools.cs +++ b/SabreTools.Helper/Tools/RomTools.cs @@ -30,10 +30,13 @@ namespace SabreTools.Helper { Name = Path.GetFileName(input), Type = "rom", - Size = (new FileInfo(input)).Length, - CRC = string.Empty, - MD5 = string.Empty, - SHA1 = string.Empty, + HashData = new HashData + { + Size = (new FileInfo(input)).Length, + CRC = string.Empty, + MD5 = string.Empty, + SHA1 = string.Empty, + } }; try @@ -65,17 +68,17 @@ namespace SabreTools.Helper } crc.TransformFinalBlock(buffer, 0, 0); - rom.CRC = BitConverter.ToString(crc.Hash).Replace("-", "").ToLowerInvariant(); + rom.HashData.CRC = BitConverter.ToString(crc.Hash).Replace("-", "").ToLowerInvariant(); if (!noMD5) { md5.TransformFinalBlock(buffer, 0, 0); - rom.MD5 = BitConverter.ToString(md5.Hash).Replace("-", "").ToLowerInvariant(); + rom.HashData.MD5 = BitConverter.ToString(md5.Hash).Replace("-", "").ToLowerInvariant(); } if (!noSHA1) { sha1.TransformFinalBlock(buffer, 0, 0); - rom.SHA1 = BitConverter.ToString(sha1.Hash).Replace("-", "").ToLowerInvariant(); + rom.HashData.SHA1 = BitConverter.ToString(sha1.Hash).Replace("-", "").ToLowerInvariant(); } } } @@ -134,9 +137,9 @@ namespace SabreTools.Helper savedrom = lastrom; pos = i; - savedrom.CRC = (String.IsNullOrEmpty(savedrom.CRC) && !String.IsNullOrEmpty(rom.CRC) ? rom.CRC : savedrom.CRC); - savedrom.MD5 = (String.IsNullOrEmpty(savedrom.MD5) && !String.IsNullOrEmpty(rom.MD5) ? rom.MD5 : savedrom.MD5); - savedrom.SHA1 = (String.IsNullOrEmpty(savedrom.SHA1) && !String.IsNullOrEmpty(rom.SHA1) ? rom.SHA1 : savedrom.SHA1); + savedrom.HashData.CRC = (String.IsNullOrEmpty(savedrom.HashData.CRC) && !String.IsNullOrEmpty(rom.HashData.CRC) ? rom.HashData.CRC : savedrom.HashData.CRC); + savedrom.HashData.MD5 = (String.IsNullOrEmpty(savedrom.HashData.MD5) && !String.IsNullOrEmpty(rom.HashData.MD5) ? rom.HashData.MD5 : savedrom.HashData.MD5); + savedrom.HashData.SHA1 = (String.IsNullOrEmpty(savedrom.HashData.SHA1) && !String.IsNullOrEmpty(rom.HashData.SHA1) ? rom.HashData.SHA1 : savedrom.HashData.SHA1); savedrom.Dupe = dupetype; // If the current system has a lower ID than the previous, set the system accordingly @@ -248,23 +251,23 @@ namespace SabreTools.Helper if (rom.Type == "rom" && lastrom.Type == "rom") { - dupefound = ((rom.Size == lastrom.Size) && - ((String.IsNullOrEmpty(rom.CRC) || String.IsNullOrEmpty(lastrom.CRC)) || rom.CRC == lastrom.CRC) && - ((String.IsNullOrEmpty(rom.MD5) || String.IsNullOrEmpty(lastrom.MD5)) || rom.MD5 == lastrom.MD5) && - ((String.IsNullOrEmpty(rom.SHA1) || String.IsNullOrEmpty(lastrom.SHA1)) || rom.SHA1 == lastrom.SHA1) + dupefound = ((rom.HashData.Size == lastrom.HashData.Size) && + ((String.IsNullOrEmpty(rom.HashData.CRC) || String.IsNullOrEmpty(lastrom.HashData.CRC)) || rom.HashData.CRC == lastrom.HashData.CRC) && + ((String.IsNullOrEmpty(rom.HashData.MD5) || String.IsNullOrEmpty(lastrom.HashData.MD5)) || rom.HashData.MD5 == lastrom.HashData.MD5) && + ((String.IsNullOrEmpty(rom.HashData.SHA1) || String.IsNullOrEmpty(lastrom.HashData.SHA1)) || rom.HashData.SHA1 == lastrom.HashData.SHA1) ); } else if (rom.Type == "disk" && lastrom.Type == "disk") { - dupefound = (((String.IsNullOrEmpty(rom.MD5) || String.IsNullOrEmpty(lastrom.MD5)) || rom.MD5 == lastrom.MD5) && - ((String.IsNullOrEmpty(rom.SHA1) || String.IsNullOrEmpty(lastrom.SHA1)) || rom.SHA1 == lastrom.SHA1) + dupefound = (((String.IsNullOrEmpty(rom.HashData.MD5) || String.IsNullOrEmpty(lastrom.HashData.MD5)) || rom.HashData.MD5 == lastrom.HashData.MD5) && + ((String.IsNullOrEmpty(rom.HashData.SHA1) || String.IsNullOrEmpty(lastrom.HashData.SHA1)) || rom.HashData.SHA1 == lastrom.HashData.SHA1) ); } // More wonderful SHA-1 logging that has to be done - if (rom.SHA1 == lastrom.SHA1 && rom.Size != lastrom.Size) + if (rom.HashData.SHA1 == lastrom.HashData.SHA1 && rom.HashData.Size != lastrom.HashData.Size) { - logger.User("SHA-1 mismatch - Hash: " + rom.SHA1); + logger.User("SHA-1 mismatch - Hash: " + rom.HashData.SHA1); } return dupefound; diff --git a/SabreTools.Helper/Tools/Stats.cs b/SabreTools.Helper/Tools/Stats.cs index 8a095216..92da77a5 100644 --- a/SabreTools.Helper/Tools/Stats.cs +++ b/SabreTools.Helper/Tools/Stats.cs @@ -122,10 +122,10 @@ Please check the log folder if the stats scrolled offscreen"); { datdata.RomCount += (rom.Type == "rom" ? 1 : 0); datdata.DiskCount += (rom.Type == "disk" ? 1 : 0); - datdata.TotalSize += (rom.Nodump ? 0 : rom.Size); - datdata.CRCCount += (String.IsNullOrEmpty(rom.CRC) ? 0 : 1); - datdata.MD5Count += (String.IsNullOrEmpty(rom.MD5) ? 0 : 1); - datdata.SHA1Count += (String.IsNullOrEmpty(rom.SHA1) ? 0 : 1); + datdata.TotalSize += (rom.Nodump ? 0 : rom.HashData.Size); + datdata.CRCCount += (String.IsNullOrEmpty(rom.HashData.CRC) ? 0 : 1); + datdata.MD5Count += (String.IsNullOrEmpty(rom.HashData.MD5) ? 0 : 1); + datdata.SHA1Count += (String.IsNullOrEmpty(rom.HashData.SHA1) ? 0 : 1); datdata.NodumpCount += (rom.Nodump ? 1 : 0); } } diff --git a/SabreTools/DATFromDir.cs b/SabreTools/DATFromDir.cs index 31fc6ebf..40c7b304 100644 --- a/SabreTools/DATFromDir.cs +++ b/SabreTools/DATFromDir.cs @@ -178,13 +178,16 @@ namespace SabreTools Path.DirectorySeparatorChar.ToString() : "") + actualroot : actualroot), - Size = -1, - CRC = "null", - MD5 = "null", - SHA1 = "null", + HashData = new HashData + { + Size = -1, + CRC = "null", + MD5 = "null", + SHA1 = "null", + }, }; - string key = rom.Size + "-" + rom.CRC; + string key = rom.HashData.Size + "-" + rom.HashData.CRC; if (_datdata.Roms.ContainsKey(key)) { _datdata.Roms[key].Add(rom); @@ -211,13 +214,16 @@ namespace SabreTools Path.DirectorySeparatorChar.ToString() : "") + actualroot : actualroot), - Size = -1, - CRC = "null", - MD5 = "null", - SHA1 = "null", + HashData = new HashData + { + Size = -1, + CRC = "null", + MD5 = "null", + SHA1 = "null", + }, }; - string key = rom.Size + "-" + rom.CRC; + string key = rom.HashData.Size + "-" + rom.HashData.CRC; if (_datdata.Roms.ContainsKey(key)) { _datdata.Roms[key].Add(rom); @@ -257,15 +263,15 @@ namespace SabreTools { rom.Type = "rom"; rom.Name = "-"; - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; } if (_nowrite) { - string inkey = rom.Size + "-" + rom.CRC; + string inkey = rom.HashData.Size + "-" + rom.HashData.CRC; if (_datdata.Roms.ContainsKey(inkey)) { _datdata.Roms[inkey].Add(rom); @@ -343,7 +349,7 @@ namespace SabreTools if (_nowrite) { - string key = rom.Size + "-" + rom.CRC; + string key = rom.HashData.Size + "-" + rom.HashData.CRC; if (_datdata.Roms.ContainsKey(key)) { _datdata.Roms[key].Add(rom); @@ -515,7 +521,7 @@ namespace SabreTools if (_nowrite) { - string key = rom.Size + "-" + rom.CRC; + string key = rom.HashData.Size + "-" + rom.HashData.CRC; if (_datdata.Roms.ContainsKey(key)) { _datdata.Roms[key].Add(rom); diff --git a/SabreTools/OfflineMerge.cs b/SabreTools/OfflineMerge.cs index d9321f1c..19e73f3e 100644 --- a/SabreTools/OfflineMerge.cs +++ b/SabreTools/OfflineMerge.cs @@ -230,10 +230,10 @@ namespace SabreTools for (int i = 0; i < roms.Count; i++) { Rom rom = roms[i]; - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; temp.Add(rom); } netNew[key] = temp; @@ -248,10 +248,10 @@ namespace SabreTools for (int i = 0; i < roms.Count; i++) { Rom rom = roms[i]; - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; temp.Add(rom); } unneeded[key] = temp; @@ -266,10 +266,10 @@ namespace SabreTools for (int i = 0; i < roms.Count; i++) { Rom rom = roms[i]; - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; temp.Add(rom); } newMissing[key] = temp; @@ -284,10 +284,10 @@ namespace SabreTools for (int i = 0; i < roms.Count; i++) { Rom rom = roms[i]; - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; temp.Add(rom); } have[key] = temp; @@ -398,10 +398,10 @@ namespace SabreTools for (int i = 0; i < roms.Count; i++) { Rom rom = roms[i]; - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; temp.Add(rom); } have[key] = temp; @@ -468,10 +468,10 @@ namespace SabreTools for (int i = 0; i < roms.Count; i++) { Rom rom = roms[i]; - rom.Size = Constants.SizeZero; - rom.CRC = Constants.CRCZero; - rom.MD5 = Constants.MD5Zero; - rom.SHA1 = Constants.SHA1Zero; + rom.HashData.Size = Constants.SizeZero; + rom.HashData.CRC = Constants.CRCZero; + rom.HashData.MD5 = Constants.MD5Zero; + rom.HashData.SHA1 = Constants.SHA1Zero; temp.Add(rom); } have[key] = temp; diff --git a/SabreTools/Split.cs b/SabreTools/Split.cs index aaef021f..abbd09fe 100644 --- a/SabreTools/Split.cs +++ b/SabreTools/Split.cs @@ -246,7 +246,7 @@ namespace SabreTools } } // If the file has a SHA-1 - else if (rom.SHA1 != null && rom.SHA1 != "") + else if (rom.HashData.SHA1 != null && rom.HashData.SHA1 != "") { if (sha1.Roms.ContainsKey(key)) { @@ -260,7 +260,7 @@ namespace SabreTools } } // If the file has no SHA-1 but has an MD5 - else if (rom.MD5 != null && rom.MD5 != "") + else if (rom.HashData.MD5 != null && rom.HashData.MD5 != "") { if (md5.Roms.ContainsKey(key)) { diff --git a/SimpleSort/SimpleSort.cs b/SimpleSort/SimpleSort.cs index 7557c057..6e1cacf0 100644 --- a/SimpleSort/SimpleSort.cs +++ b/SimpleSort/SimpleSort.cs @@ -374,7 +374,7 @@ namespace SabreTools if (rom.Metadata.SourceID == 99) { found = true; - string key = rom.Size + "-" + rom.CRC; + string key = rom.HashData.Size + "-" + rom.HashData.CRC; if (_matched.Roms.ContainsKey(key)) { _matched.Roms[key].Add(rom); @@ -508,7 +508,7 @@ namespace SabreTools _logger.Log("Matched name: " + found.Name); // Add rom to the matched list - string key = found.Size + "-" + found.CRC; + string key = found.HashData.Size + "-" + found.HashData.CRC; if(_matched.Roms.ContainsKey(key)) { _matched.Roms[key].Add(found); @@ -529,7 +529,7 @@ namespace SabreTools Directory.CreateDirectory(gamedir); } - _logger.Log("Rebuilding file '" + Path.GetFileName(rom.Name) + "' to '" + (_tgz ? found.SHA1 : found.Name) + "'"); + _logger.Log("Rebuilding file '" + Path.GetFileName(rom.Name) + "' to '" + (_tgz ? found.HashData.SHA1 : found.Name) + "'"); try { File.Copy(input, Path.Combine(gamedir, Path.GetFileName(found.Name))); @@ -572,7 +572,7 @@ namespace SabreTools foreach (Rom found in founddroms) { // Add rom to the matched list - string key = found.Size + "-" + found.CRC; + string key = found.HashData.Size + "-" + found.HashData.CRC; if (_matched.Roms.ContainsKey(key)) { _matched.Roms[key].Add(found); @@ -596,7 +596,7 @@ namespace SabreTools Directory.CreateDirectory(gamedir); } - _logger.Log("Rebuilding file '" + Path.GetFileName(rom.Name) + "' to '" + (_tgz ? found.SHA1 : found.Name) + "'"); + _logger.Log("Rebuilding file '" + Path.GetFileName(rom.Name) + "' to '" + (_tgz ? found.HashData.SHA1 : found.Name) + "'"); try { File.Copy(newinput, Path.Combine(gamedir, Path.GetFileName(found.Name))); @@ -617,10 +617,10 @@ namespace SabreTools // Then output the headered rom (renamed) Rom newfound = found; - newfound.Name = Path.GetFileNameWithoutExtension(newfound.Name) + " (" + rom.CRC + ")" + Path.GetExtension(newfound.Name); + newfound.Name = Path.GetFileNameWithoutExtension(newfound.Name) + " (" + rom.HashData.CRC + ")" + Path.GetExtension(newfound.Name); // Add rom to the matched list - key = newfound.Size + "-" + newfound.CRC; + key = newfound.HashData.Size + "-" + newfound.HashData.CRC; if (_matched.Roms.ContainsKey(key)) { _matched.Roms[key].Add(newfound); @@ -695,7 +695,7 @@ namespace SabreTools foreach (Rom found in foundroms) { // Add rom to the matched list - string key = found.Size + "-" + found.CRC; + string key = found.HashData.Size + "-" + found.HashData.CRC; if (_matched.Roms.ContainsKey(key)) { _matched.Roms[key].Add(found); @@ -730,7 +730,7 @@ namespace SabreTools else { // Copy file between archives - _logger.Log("Rebuilding file '" + Path.GetFileName(rom.Name) + "' to '" + (_tgz ? found.SHA1 : found.Name) + "'"); + _logger.Log("Rebuilding file '" + Path.GetFileName(rom.Name) + "' to '" + (_tgz ? found.HashData.SHA1 : found.Name) + "'"); if (Build.MonoEnvironment || _tgz) { @@ -851,7 +851,7 @@ namespace SabreTools // Then add each of the found files to the new dictionary foreach (Rom rom in roms) { - string key = rom.Size + "-" + rom.CRC; + string key = rom.HashData.Size + "-" + rom.HashData.CRC; if (scanned.ContainsKey(key)) { scanned[key].Add(rom);