[Structs] Add HashData struct

This commit is contained in:
Matt Nadareski
2016-08-29 13:05:32 -07:00
parent bcfa68fb85
commit 4231cf97b9
11 changed files with 259 additions and 209 deletions

View File

@@ -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();

View File

@@ -3,6 +3,29 @@ using System.Collections.Generic;
namespace SabreTools.Helper
{
/// <summary>
/// Intermediate struct for holding and processing hash data
/// </summary>
public struct HashData : IComparable, IEquatable<HashData>
{
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;
}
}
/// <summary>
/// Intermediate struct for holding and processing rom data
/// </summary>
@@ -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;

View File

@@ -539,8 +539,11 @@ namespace SabreTools.Helper
Type = "rom",
Name = reader.Entry.Key,
Game = gamename,
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(),
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))
{

View File

@@ -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],
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,
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,
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,
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"),
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;
}

View File

@@ -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 += "<file type=\"" + 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 ? prefix + "/>\n" + prefix + "\t<flags>\n" +
prefix + "\t\t<flag name=\"status\" value=\"nodump\"/>\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";

View File

@@ -30,10 +30,13 @@ namespace SabreTools.Helper
{
Name = Path.GetFileName(input),
Type = "rom",
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;

View File

@@ -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);
}
}

View File

@@ -178,13 +178,16 @@ namespace SabreTools
Path.DirectorySeparatorChar.ToString() :
"") + actualroot :
actualroot),
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),
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);

View File

@@ -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;

View File

@@ -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))
{

View File

@@ -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);