diff --git a/SabreTools.Helper/Data/Structs.cs b/SabreTools.Helper/Data/Structs.cs
index 0baf8d42..703891e7 100644
--- a/SabreTools.Helper/Data/Structs.cs
+++ b/SabreTools.Helper/Data/Structs.cs
@@ -6,23 +6,42 @@ namespace SabreTools.Helper
///
/// Intermediate struct for holding and processing hash data
///
- public struct HashData : IComparable, IEquatable
+ public struct HashData : 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;
+ if ((this.Size == other.Size) &&
+ ((String.IsNullOrEmpty(this.CRC) || String.IsNullOrEmpty(other.CRC)) || this.CRC == other.CRC) &&
+ ((String.IsNullOrEmpty(this.MD5) || String.IsNullOrEmpty(other.MD5)) || this.MD5 == other.MD5) &&
+ ((String.IsNullOrEmpty(this.SHA1) || String.IsNullOrEmpty(other.SHA1)) || this.SHA1 == other.SHA1))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ public bool Equals(HashData other, bool IsDisk)
+ {
+ if (IsDisk)
+ {
+ HashData newthis = this;
+ newthis.Size = Constants.SizeZero;
+ newthis.CRC = Constants.CRCZero;
+
+ HashData newother = other;
+ newother.Size = Constants.SizeZero;
+ newother.CRC = Constants.CRCZero;
+
+ return newthis.Equals(newother);
+ }
+
+ return this.Equals(other);
}
}
diff --git a/SabreTools.Helper/Tools/RomTools.cs b/SabreTools.Helper/Tools/RomTools.cs
index 20ecf11b..a8799dd7 100644
--- a/SabreTools.Helper/Tools/RomTools.cs
+++ b/SabreTools.Helper/Tools/RomTools.cs
@@ -251,17 +251,11 @@ namespace SabreTools.Helper
if (rom.Type == "rom" && lastrom.Type == "rom")
{
- 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)
- );
+ dupefound = rom.HashData.Equals(lastrom.HashData, false);
}
else if (rom.Type == "disk" && lastrom.Type == "disk")
{
- 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)
- );
+ dupefound = rom.HashData.Equals(lastrom.HashData, true);
}
// More wonderful SHA-1 logging that has to be done