mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[ALL] Nearly all work for SHA384/512 support
This commit is contained in:
@@ -404,7 +404,7 @@ namespace RombaSharp
|
|||||||
|
|
||||||
// First get a list of SHA-1's from the input DATs
|
// First get a list of SHA-1's from the input DATs
|
||||||
DatFile datroot = new DatFile { Type = "SuperDAT", };
|
DatFile datroot = new DatFile { Type = "SuperDAT", };
|
||||||
datroot.PopulateFromDir(_dats, false, false, true, false, false, false, false, false, _tmpdir, false, null, 4, _logger);
|
datroot.PopulateFromDir(_dats, Hash.SHA256 & Hash.SHA384 & Hash.SHA512, false, false, false, false, false, _tmpdir, false, null, 4, _logger);
|
||||||
datroot.BucketBySHA1(false, _logger, false);
|
datroot.BucketBySHA1(false, _logger, false);
|
||||||
|
|
||||||
// Create a List of dat hashes in the database (SHA-1)
|
// Create a List of dat hashes in the database (SHA-1)
|
||||||
@@ -618,7 +618,7 @@ namespace RombaSharp
|
|||||||
|
|
||||||
// Now rescan the depot itself
|
// Now rescan the depot itself
|
||||||
DatFile depot = new DatFile();
|
DatFile depot = new DatFile();
|
||||||
depot.PopulateFromDir(depotname, false, false, true, false, false, true, false, false, _tmpdir, false, null, _workers, _logger);
|
depot.PopulateFromDir(depotname, Hash.SHA256 & Hash.SHA384 & Hash.SHA512, false, false, true, false, false, _tmpdir, false, null, _workers, _logger);
|
||||||
depot.BucketBySHA1(false, _logger, false);
|
depot.BucketBySHA1(false, _logger, false);
|
||||||
|
|
||||||
// Set the base queries to use
|
// Set the base queries to use
|
||||||
|
|||||||
@@ -41,12 +41,12 @@ namespace RombaSharp
|
|||||||
DatFile df = new DatFile();
|
DatFile df = new DatFile();
|
||||||
foreach (string dir in onlyDirs)
|
foreach (string dir in onlyDirs)
|
||||||
{
|
{
|
||||||
df.PopulateFromDir(dir, false, false, true, false, false, true, false, false, _tmpdir, false, null, _workers, _logger);
|
df.PopulateFromDir(dir, Hash.SHA256 & Hash.SHA384 & Hash.SHA512, false, false, true, false, false, _tmpdir, false, null, _workers, _logger);
|
||||||
|
|
||||||
// If we're looking for only needed, consider the zipfiles themselves too
|
// If we're looking for only needed, consider the zipfiles themselves too
|
||||||
if (onlyNeeded)
|
if (onlyNeeded)
|
||||||
{
|
{
|
||||||
df.PopulateFromDir(dir, false, false, true, false, true, true, false, false, _tmpdir, false, null, _workers, _logger);
|
df.PopulateFromDir(dir, Hash.SHA256 & Hash.SHA384 & Hash.SHA512, false, true, true, false, false, _tmpdir, false, null, _workers, _logger);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -250,7 +250,7 @@ namespace RombaSharp
|
|||||||
Logger logger = new Logger();
|
Logger logger = new Logger();
|
||||||
foreach (string input in inputs)
|
foreach (string input in inputs)
|
||||||
{
|
{
|
||||||
datdata.PopulateFromDir(input, false /* noMD5 */, false /* noSHA1 */, true /* noSHA256 */, true /* bare */, false /* archivesAsFiles */,
|
datdata.PopulateFromDir(input, Hash.SHA256 & Hash.SHA384 & Hash.SHA512 /* omitFromScan */, true /* bare */, false /* archivesAsFiles */,
|
||||||
true /* enableGzip */, false /* addBlanks */, false /* addDate */, _tmpdir /* tempDir */, false /* copyFiles */,
|
true /* enableGzip */, false /* addBlanks */, false /* addDate */, _tmpdir /* tempDir */, false /* copyFiles */,
|
||||||
null /* headerToCheckAgainst */, _workers /* maxDegreeOfParallelism */, _logger);
|
null /* headerToCheckAgainst */, _workers /* maxDegreeOfParallelism */, _logger);
|
||||||
datdata.WriteToFile("", logger);
|
datdata.WriteToFile("", logger);
|
||||||
|
|||||||
@@ -254,6 +254,8 @@
|
|||||||
MD5,
|
MD5,
|
||||||
SHA1,
|
SHA1,
|
||||||
SHA256,
|
SHA256,
|
||||||
|
SHA384,
|
||||||
|
SHA512,
|
||||||
Game,
|
Game,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -192,23 +192,25 @@ namespace SabreTools.Helper.Data
|
|||||||
[Flags]
|
[Flags]
|
||||||
public enum DatFormat
|
public enum DatFormat
|
||||||
{
|
{
|
||||||
Logiqx = 0x0001,
|
Logiqx = 0x00001,
|
||||||
ClrMamePro = 0x0002,
|
ClrMamePro = 0x00002,
|
||||||
RomCenter = 0x0004,
|
RomCenter = 0x00004,
|
||||||
DOSCenter = 0x0008,
|
DOSCenter = 0x00008,
|
||||||
MissFile = 0x0010,
|
MissFile = 0x00010,
|
||||||
SabreDat = 0x0020,
|
SabreDat = 0x00020,
|
||||||
RedumpMD5 = 0x0040,
|
RedumpMD5 = 0x00040,
|
||||||
RedumpSHA1 = 0x0080,
|
RedumpSHA1 = 0x00080,
|
||||||
RedumpSFV = 0x0100,
|
RedumpSFV = 0x00100,
|
||||||
SoftwareList = 0x0200,
|
SoftwareList = 0x00200,
|
||||||
OfflineList = 0x0400,
|
OfflineList = 0x00400,
|
||||||
TSV = 0x0800,
|
TSV = 0x00800,
|
||||||
CSV = 0x1000,
|
CSV = 0x01000,
|
||||||
AttractMode = 0x2000,
|
AttractMode = 0x02000,
|
||||||
RedumpSHA256 = 0x4000,
|
RedumpSHA256 = 0x04000,
|
||||||
|
RedumpSHA384 = 0x08000,
|
||||||
|
RedumpSHA512 = 0x10000,
|
||||||
|
|
||||||
ALL = 0xFFFF,
|
ALL = 0xFFFFF,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
private long _md5Count;
|
private long _md5Count;
|
||||||
private long _sha1Count;
|
private long _sha1Count;
|
||||||
private long _sha256Count;
|
private long _sha256Count;
|
||||||
|
private long _sha384Count;
|
||||||
|
private long _sha512Count;
|
||||||
private long _baddumpCount;
|
private long _baddumpCount;
|
||||||
private long _nodumpCount;
|
private long _nodumpCount;
|
||||||
|
|
||||||
@@ -255,6 +257,16 @@ namespace SabreTools.Helper.Dats
|
|||||||
get { return _sha256Count; }
|
get { return _sha256Count; }
|
||||||
set { _sha256Count = value; }
|
set { _sha256Count = value; }
|
||||||
}
|
}
|
||||||
|
public long SHA384Count
|
||||||
|
{
|
||||||
|
get { return _sha384Count; }
|
||||||
|
set { _sha384Count = value; }
|
||||||
|
}
|
||||||
|
public long SHA512Count
|
||||||
|
{
|
||||||
|
get { return _sha512Count; }
|
||||||
|
set { _sha512Count = value; }
|
||||||
|
}
|
||||||
public long BaddumpCount
|
public long BaddumpCount
|
||||||
{
|
{
|
||||||
get { return _baddumpCount; }
|
get { return _baddumpCount; }
|
||||||
|
|||||||
@@ -98,6 +98,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5 = this.MD5,
|
MD5 = this.MD5,
|
||||||
SHA1 = this.SHA1,
|
SHA1 = this.SHA1,
|
||||||
SHA256 = this.SHA256,
|
SHA256 = this.SHA256,
|
||||||
|
SHA384 = this.SHA384,
|
||||||
|
SHA512 = this.SHA512,
|
||||||
ItemStatus = this.ItemStatus,
|
ItemStatus = this.ItemStatus,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -127,7 +129,9 @@ namespace SabreTools.Helper.Dats
|
|||||||
|
|
||||||
if (((String.IsNullOrEmpty(_md5) || String.IsNullOrEmpty(newOther.MD5)) || this.MD5 == newOther.MD5)
|
if (((String.IsNullOrEmpty(_md5) || String.IsNullOrEmpty(newOther.MD5)) || this.MD5 == newOther.MD5)
|
||||||
&& ((String.IsNullOrEmpty(this.SHA1) || String.IsNullOrEmpty(newOther.SHA1)) || this.SHA1 == newOther.SHA1)
|
&& ((String.IsNullOrEmpty(this.SHA1) || String.IsNullOrEmpty(newOther.SHA1)) || this.SHA1 == newOther.SHA1)
|
||||||
&& ((String.IsNullOrEmpty(this.SHA256) || String.IsNullOrEmpty(newOther.SHA256)) || this.SHA256 == newOther.SHA256))
|
&& ((String.IsNullOrEmpty(this.SHA256) || String.IsNullOrEmpty(newOther.SHA256)) || this.SHA256 == newOther.SHA256)
|
||||||
|
&& ((String.IsNullOrEmpty(this.SHA384) || String.IsNullOrEmpty(newOther.SHA384)) || this.SHA384 == newOther.SHA384)
|
||||||
|
&& ((String.IsNullOrEmpty(this.SHA512) || String.IsNullOrEmpty(newOther.SHA512)) || this.SHA256 == newOther.SHA512))
|
||||||
{
|
{
|
||||||
dupefound = true;
|
dupefound = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
private List<string> _md5s;
|
private List<string> _md5s;
|
||||||
private List<string> _sha1s;
|
private List<string> _sha1s;
|
||||||
private List<string> _sha256s;
|
private List<string> _sha256s;
|
||||||
|
private List<string> _sha384s;
|
||||||
|
private List<string> _sha512s;
|
||||||
private ItemStatus _itemStatuses;
|
private ItemStatus _itemStatuses;
|
||||||
private MachineType _machineTypes;
|
private MachineType _machineTypes;
|
||||||
|
|
||||||
@@ -33,6 +35,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
private List<string> _notMd5s;
|
private List<string> _notMd5s;
|
||||||
private List<string> _notSha1s;
|
private List<string> _notSha1s;
|
||||||
private List<string> _notSha256s;
|
private List<string> _notSha256s;
|
||||||
|
private List<string> _notSha384s;
|
||||||
|
private List<string> _notSha512s;
|
||||||
private ItemStatus _itemNotStatuses;
|
private ItemStatus _itemNotStatuses;
|
||||||
private MachineType _machineNotTypes;
|
private MachineType _machineNotTypes;
|
||||||
|
|
||||||
@@ -89,6 +93,16 @@ namespace SabreTools.Helper.Dats
|
|||||||
get { return _sha256s; }
|
get { return _sha256s; }
|
||||||
set { _sha256s = value; }
|
set { _sha256s = value; }
|
||||||
}
|
}
|
||||||
|
public List<string> SHA384s
|
||||||
|
{
|
||||||
|
get { return _sha384s; }
|
||||||
|
set { _sha384s = value; }
|
||||||
|
}
|
||||||
|
public List<string> SHA512s
|
||||||
|
{
|
||||||
|
get { return _sha512s; }
|
||||||
|
set { _sha512s = value; }
|
||||||
|
}
|
||||||
public ItemStatus ItemStatuses
|
public ItemStatus ItemStatuses
|
||||||
{
|
{
|
||||||
get { return _itemStatuses; }
|
get { return _itemStatuses; }
|
||||||
@@ -139,6 +153,16 @@ namespace SabreTools.Helper.Dats
|
|||||||
get { return _notSha256s; }
|
get { return _notSha256s; }
|
||||||
set { _notSha256s = value; }
|
set { _notSha256s = value; }
|
||||||
}
|
}
|
||||||
|
public List<string> NotSHA384s
|
||||||
|
{
|
||||||
|
get { return _notSha384s; }
|
||||||
|
set { _notSha384s = value; }
|
||||||
|
}
|
||||||
|
public List<string> NotSHA512s
|
||||||
|
{
|
||||||
|
get { return _notSha512s; }
|
||||||
|
set { _notSha512s = value; }
|
||||||
|
}
|
||||||
public ItemStatus NotItemStatuses
|
public ItemStatus NotItemStatuses
|
||||||
{
|
{
|
||||||
get { return _itemNotStatuses; }
|
get { return _itemNotStatuses; }
|
||||||
@@ -199,6 +223,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
_md5s = new List<string>();
|
_md5s = new List<string>();
|
||||||
_sha1s = new List<string>();
|
_sha1s = new List<string>();
|
||||||
_sha256s = new List<string>();
|
_sha256s = new List<string>();
|
||||||
|
_sha384s = new List<string>();
|
||||||
|
_sha512s = new List<string>();
|
||||||
_itemStatuses = ItemStatus.NULL;
|
_itemStatuses = ItemStatus.NULL;
|
||||||
_machineTypes = MachineType.NULL;
|
_machineTypes = MachineType.NULL;
|
||||||
|
|
||||||
@@ -210,6 +236,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
_notMd5s = new List<string>();
|
_notMd5s = new List<string>();
|
||||||
_notSha1s = new List<string>();
|
_notSha1s = new List<string>();
|
||||||
_notSha256s = new List<string>();
|
_notSha256s = new List<string>();
|
||||||
|
_notSha384s = new List<string>();
|
||||||
|
_notSha512s = new List<string>();
|
||||||
_itemNotStatuses = ItemStatus.NULL;
|
_itemNotStatuses = ItemStatus.NULL;
|
||||||
_machineNotTypes = MachineType.NULL;
|
_machineNotTypes = MachineType.NULL;
|
||||||
|
|
||||||
@@ -364,6 +392,42 @@ namespace SabreTools.Helper.Dats
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Filter on SHA384
|
||||||
|
if (_sha384s.Count > 0)
|
||||||
|
{
|
||||||
|
// If the SHA-1 isn't in the list, return false
|
||||||
|
if (!FindValueInList(_sha384s, rom.SHA384))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_notSha384s.Count > 0)
|
||||||
|
{
|
||||||
|
// If the SHA-1 is in the list, return false
|
||||||
|
if (FindValueInList(_notSha384s, rom.SHA384))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter on SHA512
|
||||||
|
if (_sha512s.Count > 0)
|
||||||
|
{
|
||||||
|
// If the SHA-1 isn't in the list, return false
|
||||||
|
if (!FindValueInList(_sha512s, rom.SHA512))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_notSha512s.Count > 0)
|
||||||
|
{
|
||||||
|
// If the SHA-1 is in the list, return false
|
||||||
|
if (FindValueInList(_notSha512s, rom.SHA512))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (item.Type == ItemType.Disk)
|
else if (item.Type == ItemType.Disk)
|
||||||
{
|
{
|
||||||
@@ -432,6 +496,42 @@ namespace SabreTools.Helper.Dats
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Filter on SHA384
|
||||||
|
if (_sha384s.Count > 0)
|
||||||
|
{
|
||||||
|
// If the SHA-1 isn't in the list, return false
|
||||||
|
if (!FindValueInList(_sha384s, rom.SHA384))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_notSha384s.Count > 0)
|
||||||
|
{
|
||||||
|
// If the SHA-1 is in the list, return false
|
||||||
|
if (FindValueInList(_notSha384s, rom.SHA384))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter on SHA512
|
||||||
|
if (_sha512s.Count > 0)
|
||||||
|
{
|
||||||
|
// If the SHA-1 isn't in the list, return false
|
||||||
|
if (!FindValueInList(_sha512s, rom.SHA512))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_notSha512s.Count > 0)
|
||||||
|
{
|
||||||
|
// If the SHA-1 is in the list, return false
|
||||||
|
if (FindValueInList(_notSha512s, rom.SHA512))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Filter on game name
|
// Filter on game name
|
||||||
|
|||||||
@@ -375,6 +375,148 @@ namespace SabreTools.Helper.Dats
|
|||||||
_files = sortable;
|
_files = sortable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Take the arbitrarily sorted Files Dictionary and convert to one sorted by SHA384
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="mergeroms">True if roms should be deduped, false otherwise</param>
|
||||||
|
/// <param name="logger">Logger object for file and console output</param>
|
||||||
|
/// <param name="output">True if the number of hashes counted is to be output (default), false otherwise</param>
|
||||||
|
public void BucketBySHA384(bool mergeroms, Logger logger, bool output = true)
|
||||||
|
{
|
||||||
|
// If we already have the right sorting, trust it
|
||||||
|
if (_sortedBy == SortedBy.SHA384)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the sorted type
|
||||||
|
_sortedBy = SortedBy.SHA384;
|
||||||
|
|
||||||
|
SortedDictionary<string, List<DatItem>> sortable = new SortedDictionary<string, List<DatItem>>();
|
||||||
|
long count = 0;
|
||||||
|
|
||||||
|
logger.User("Organizing " + (mergeroms ? "and merging " : "") + "roms by SHA-384");
|
||||||
|
|
||||||
|
// Process each all of the roms
|
||||||
|
List<string> keys = Keys.ToList();
|
||||||
|
foreach (string key in keys)
|
||||||
|
{
|
||||||
|
List<DatItem> roms = this[key];
|
||||||
|
|
||||||
|
// If we're merging the roms, do so
|
||||||
|
if (mergeroms)
|
||||||
|
{
|
||||||
|
roms = DatItem.Merge(roms, logger);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now add each of the roms to their respective games
|
||||||
|
foreach (DatItem rom in roms)
|
||||||
|
{
|
||||||
|
count++;
|
||||||
|
string newkey = (rom.Type == ItemType.Rom
|
||||||
|
? ((Rom)rom).SHA384
|
||||||
|
: (rom.Type == ItemType.Disk
|
||||||
|
? ((Disk)rom).SHA384
|
||||||
|
: Constants.SHA384Zero));
|
||||||
|
|
||||||
|
if (!sortable.ContainsKey(newkey))
|
||||||
|
{
|
||||||
|
sortable.Add(newkey, new List<DatItem>());
|
||||||
|
}
|
||||||
|
sortable[newkey].Add(rom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now go through and sort all of the lists
|
||||||
|
keys = sortable.Keys.ToList();
|
||||||
|
foreach (string key in keys)
|
||||||
|
{
|
||||||
|
List<DatItem> sortedlist = sortable[key];
|
||||||
|
DatItem.Sort(ref sortedlist, false);
|
||||||
|
sortable[key] = sortedlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Output the count if told to
|
||||||
|
if (output)
|
||||||
|
{
|
||||||
|
logger.User("A total of " + count + " file hashes will be written out to file");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now assign the dictionary back
|
||||||
|
_files = sortable;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Take the arbitrarily sorted Files Dictionary and convert to one sorted by SHA512
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="mergeroms">True if roms should be deduped, false otherwise</param>
|
||||||
|
/// <param name="logger">Logger object for file and console output</param>
|
||||||
|
/// <param name="output">True if the number of hashes counted is to be output (default), false otherwise</param>
|
||||||
|
public void BucketBySHA512(bool mergeroms, Logger logger, bool output = true)
|
||||||
|
{
|
||||||
|
// If we already have the right sorting, trust it
|
||||||
|
if (_sortedBy == SortedBy.SHA512)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the sorted type
|
||||||
|
_sortedBy = SortedBy.SHA512;
|
||||||
|
|
||||||
|
SortedDictionary<string, List<DatItem>> sortable = new SortedDictionary<string, List<DatItem>>();
|
||||||
|
long count = 0;
|
||||||
|
|
||||||
|
logger.User("Organizing " + (mergeroms ? "and merging " : "") + "roms by SHA-512");
|
||||||
|
|
||||||
|
// Process each all of the roms
|
||||||
|
List<string> keys = Keys.ToList();
|
||||||
|
foreach (string key in keys)
|
||||||
|
{
|
||||||
|
List<DatItem> roms = this[key];
|
||||||
|
|
||||||
|
// If we're merging the roms, do so
|
||||||
|
if (mergeroms)
|
||||||
|
{
|
||||||
|
roms = DatItem.Merge(roms, logger);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now add each of the roms to their respective games
|
||||||
|
foreach (DatItem rom in roms)
|
||||||
|
{
|
||||||
|
count++;
|
||||||
|
string newkey = (rom.Type == ItemType.Rom
|
||||||
|
? ((Rom)rom).SHA512
|
||||||
|
: (rom.Type == ItemType.Disk
|
||||||
|
? ((Disk)rom).SHA512
|
||||||
|
: Constants.SHA512Zero));
|
||||||
|
|
||||||
|
if (!sortable.ContainsKey(newkey))
|
||||||
|
{
|
||||||
|
sortable.Add(newkey, new List<DatItem>());
|
||||||
|
}
|
||||||
|
sortable[newkey].Add(rom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now go through and sort all of the lists
|
||||||
|
keys = sortable.Keys.ToList();
|
||||||
|
foreach (string key in keys)
|
||||||
|
{
|
||||||
|
List<DatItem> sortedlist = sortable[key];
|
||||||
|
DatItem.Sort(ref sortedlist, false);
|
||||||
|
sortable[key] = sortedlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Output the count if told to
|
||||||
|
if (output)
|
||||||
|
{
|
||||||
|
logger.User("A total of " + count + " file hashes will be written out to file");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now assign the dictionary back
|
||||||
|
_files = sortable;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Take the arbitrarily sorted Files Dictionary and convert to one sorted by Size
|
/// Take the arbitrarily sorted Files Dictionary and convert to one sorted by Size
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -88,7 +88,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
{
|
{
|
||||||
ext = ext.Substring(1);
|
ext = ext.Substring(1);
|
||||||
}
|
}
|
||||||
if (ext != "dat" && ext != "csv" && ext != "md5" && ext != "sfv" && ext != "sha1" && ext != "sha256" && ext != "tsv" && ext != "txt" && ext != "xml")
|
if (ext != "dat" && ext != "csv" && ext != "md5" && ext != "sfv" && ext != "sha1" && ext != "sha256"
|
||||||
|
&& ext != "sha384" && ext != "sha512" && ext != "tsv" && ext != "txt" && ext != "xml")
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -130,6 +131,12 @@ namespace SabreTools.Helper.Dats
|
|||||||
case DatFormat.RedumpSHA256:
|
case DatFormat.RedumpSHA256:
|
||||||
ParseRedumpSHA256(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
ParseRedumpSHA256(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
||||||
break;
|
break;
|
||||||
|
case DatFormat.RedumpSHA384:
|
||||||
|
ParseRedumpSHA384(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
||||||
|
break;
|
||||||
|
case DatFormat.RedumpSHA512:
|
||||||
|
ParseRedumpSHA512(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
||||||
|
break;
|
||||||
case DatFormat.RomCenter:
|
case DatFormat.RomCenter:
|
||||||
ParseRC(filename, sysid, srcid, filter, trim, single, root, logger, clean, descAsName);
|
ParseRC(filename, sysid, srcid, filter, trim, single, root, logger, clean, descAsName);
|
||||||
break;
|
break;
|
||||||
@@ -493,6 +500,20 @@ namespace SabreTools.Helper.Dats
|
|||||||
i++;
|
i++;
|
||||||
((Rom)item).SHA256 = gc[i].Replace("\"", "").ToLowerInvariant();
|
((Rom)item).SHA256 = gc[i].Replace("\"", "").ToLowerInvariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the SHA384 from the next part
|
||||||
|
else if (gc[i] == "sha384")
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
((Rom)item).SHA384 = gc[i].Replace("\"", "").ToLowerInvariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the SHA512 from the next part
|
||||||
|
else if (gc[i] == "sha512")
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
((Rom)item).SHA512 = gc[i].Replace("\"", "").ToLowerInvariant();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now process and add the rom
|
// Now process and add the rom
|
||||||
@@ -623,6 +644,34 @@ namespace SabreTools.Helper.Dats
|
|||||||
((Disk)item).SHA256 = quoteless.ToLowerInvariant();
|
((Disk)item).SHA256 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case "sha384":
|
||||||
|
if (item.Type == ItemType.Rom)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
quoteless = gc[i].Replace("\"", "");
|
||||||
|
((Rom)item).SHA384 = quoteless.ToLowerInvariant();
|
||||||
|
}
|
||||||
|
else if (item.Type == ItemType.Disk)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
quoteless = gc[i].Replace("\"", "");
|
||||||
|
((Disk)item).SHA384 = quoteless.ToLowerInvariant();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "sha512":
|
||||||
|
if (item.Type == ItemType.Rom)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
quoteless = gc[i].Replace("\"", "");
|
||||||
|
((Rom)item).SHA512 = quoteless.ToLowerInvariant();
|
||||||
|
}
|
||||||
|
else if (item.Type == ItemType.Disk)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
quoteless = gc[i].Replace("\"", "");
|
||||||
|
((Disk)item).SHA512 = quoteless.ToLowerInvariant();
|
||||||
|
}
|
||||||
|
break;
|
||||||
case "status":
|
case "status":
|
||||||
case "flags":
|
case "flags":
|
||||||
i++;
|
i++;
|
||||||
@@ -978,6 +1027,18 @@ namespace SabreTools.Helper.Dats
|
|||||||
case "sha-256 hash":
|
case "sha-256 hash":
|
||||||
columns.Add("DatItem.SHA256");
|
columns.Add("DatItem.SHA256");
|
||||||
break;
|
break;
|
||||||
|
case "sha384":
|
||||||
|
case "sha-384":
|
||||||
|
case "sha384 hash":
|
||||||
|
case "sha-384 hash":
|
||||||
|
columns.Add("DatItem.SHA384");
|
||||||
|
break;
|
||||||
|
case "sha512":
|
||||||
|
case "sha-512":
|
||||||
|
case "sha512 hash":
|
||||||
|
case "sha-512 hash":
|
||||||
|
columns.Add("DatItem.SHA512");
|
||||||
|
break;
|
||||||
case "nodump":
|
case "nodump":
|
||||||
case "no dump":
|
case "no dump":
|
||||||
case "status":
|
case "status":
|
||||||
@@ -1001,7 +1062,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set the output item information
|
// Set the output item information
|
||||||
string machineName = null, machineDesc = null, name = null, crc = null, md5 = null, sha1 = null, sha256 = null;
|
string machineName = null, machineDesc = null, name = null, crc = null, md5 = null, sha1 = null,
|
||||||
|
sha256 = null, sha384 = null, sha512 = null;
|
||||||
long size = -1;
|
long size = -1;
|
||||||
ItemType itemType = ItemType.Rom;
|
ItemType itemType = ItemType.Rom;
|
||||||
ItemStatus status = ItemStatus.None;
|
ItemStatus status = ItemStatus.None;
|
||||||
@@ -1073,6 +1135,12 @@ namespace SabreTools.Helper.Dats
|
|||||||
case "DatItem.SHA256":
|
case "DatItem.SHA256":
|
||||||
sha256 = value;
|
sha256 = value;
|
||||||
break;
|
break;
|
||||||
|
case "DatItem.SHA384":
|
||||||
|
sha384 = value;
|
||||||
|
break;
|
||||||
|
case "DatItem.SHA512":
|
||||||
|
sha512 = value;
|
||||||
|
break;
|
||||||
case "DatItem.Nodump":
|
case "DatItem.Nodump":
|
||||||
switch (value.ToLowerInvariant())
|
switch (value.ToLowerInvariant())
|
||||||
{
|
{
|
||||||
@@ -1137,6 +1205,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5 = md5,
|
MD5 = md5,
|
||||||
SHA1 = sha1,
|
SHA1 = sha1,
|
||||||
SHA256 = sha256,
|
SHA256 = sha256,
|
||||||
|
SHA384 = sha384,
|
||||||
|
SHA512 = sha512,
|
||||||
|
|
||||||
Machine = new Machine()
|
Machine = new Machine()
|
||||||
{
|
{
|
||||||
@@ -1172,6 +1242,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5 = md5,
|
MD5 = md5,
|
||||||
SHA1 = sha1,
|
SHA1 = sha1,
|
||||||
SHA256 = sha256,
|
SHA256 = sha256,
|
||||||
|
SHA384 = sha384,
|
||||||
|
SHA512 = sha512,
|
||||||
|
|
||||||
Machine = new Machine()
|
Machine = new Machine()
|
||||||
{
|
{
|
||||||
@@ -2107,6 +2179,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5 = subreader.GetAttribute("md5")?.ToLowerInvariant(),
|
MD5 = subreader.GetAttribute("md5")?.ToLowerInvariant(),
|
||||||
SHA1 = subreader.GetAttribute("sha1")?.ToLowerInvariant(),
|
SHA1 = subreader.GetAttribute("sha1")?.ToLowerInvariant(),
|
||||||
SHA256 = subreader.GetAttribute("sha256")?.ToLowerInvariant(),
|
SHA256 = subreader.GetAttribute("sha256")?.ToLowerInvariant(),
|
||||||
|
SHA384 = subreader.GetAttribute("sha384")?.ToLowerInvariant(),
|
||||||
|
SHA512 = subreader.GetAttribute("sha512")?.ToLowerInvariant(),
|
||||||
MergeTag = merge,
|
MergeTag = merge,
|
||||||
ItemStatus = its,
|
ItemStatus = its,
|
||||||
|
|
||||||
@@ -2136,6 +2210,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5 = subreader.GetAttribute("md5")?.ToLowerInvariant(),
|
MD5 = subreader.GetAttribute("md5")?.ToLowerInvariant(),
|
||||||
SHA1 = subreader.GetAttribute("sha1")?.ToLowerInvariant(),
|
SHA1 = subreader.GetAttribute("sha1")?.ToLowerInvariant(),
|
||||||
SHA256 = subreader.GetAttribute("sha256")?.ToLowerInvariant(),
|
SHA256 = subreader.GetAttribute("sha256")?.ToLowerInvariant(),
|
||||||
|
SHA384 = subreader.GetAttribute("sha384")?.ToLowerInvariant(),
|
||||||
|
SHA512 = subreader.GetAttribute("sha512")?.ToLowerInvariant(),
|
||||||
ItemStatus = its,
|
ItemStatus = its,
|
||||||
MergeTag = merge,
|
MergeTag = merge,
|
||||||
Date = date,
|
Date = date,
|
||||||
@@ -2302,6 +2378,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5 = xtr.GetAttribute("md5")?.ToLowerInvariant(),
|
MD5 = xtr.GetAttribute("md5")?.ToLowerInvariant(),
|
||||||
SHA1 = xtr.GetAttribute("sha1")?.ToLowerInvariant(),
|
SHA1 = xtr.GetAttribute("sha1")?.ToLowerInvariant(),
|
||||||
SHA256 = xtr.GetAttribute("sha256")?.ToLowerInvariant(),
|
SHA256 = xtr.GetAttribute("sha256")?.ToLowerInvariant(),
|
||||||
|
SHA384 = xtr.GetAttribute("sha384")?.ToLowerInvariant(),
|
||||||
|
SHA512 = xtr.GetAttribute("sha512")?.ToLowerInvariant(),
|
||||||
ItemStatus = its,
|
ItemStatus = its,
|
||||||
|
|
||||||
Machine = dir,
|
Machine = dir,
|
||||||
@@ -2321,6 +2399,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5 = xtr.GetAttribute("md5")?.ToLowerInvariant(),
|
MD5 = xtr.GetAttribute("md5")?.ToLowerInvariant(),
|
||||||
SHA1 = xtr.GetAttribute("sha1")?.ToLowerInvariant(),
|
SHA1 = xtr.GetAttribute("sha1")?.ToLowerInvariant(),
|
||||||
SHA256 = xtr.GetAttribute("sha256")?.ToLowerInvariant(),
|
SHA256 = xtr.GetAttribute("sha256")?.ToLowerInvariant(),
|
||||||
|
SHA384 = xtr.GetAttribute("sha384")?.ToLowerInvariant(),
|
||||||
|
SHA512 = xtr.GetAttribute("sha512")?.ToLowerInvariant(),
|
||||||
ItemStatus = its,
|
ItemStatus = its,
|
||||||
Date = date,
|
Date = date,
|
||||||
|
|
||||||
@@ -2603,6 +2683,130 @@ namespace SabreTools.Helper.Dats
|
|||||||
sr.Dispose();
|
sr.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parse a Redump SHA-256 and return all found games and roms within
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filename">Name of the file to be parsed</param>
|
||||||
|
/// <param name="sysid">System ID for the DAT</param>
|
||||||
|
/// <param name="srcid">Source ID for the DAT</param>
|
||||||
|
/// <param name="filter">Filter object for passing to the DatItem level</param>
|
||||||
|
/// <param name="trim">True if we are supposed to trim names to NTFS length, false otherwise</param>
|
||||||
|
/// <param name="single">True if all games should be replaced by '!', false otherwise</param>
|
||||||
|
/// <param name="root">String representing root directory to compare against for length calculation</param>
|
||||||
|
/// <param name="logger">Logger object for console and/or file output</param>
|
||||||
|
/// <param name="clean">True if game names are sanitized, false otherwise (default)</param>
|
||||||
|
private void ParseRedumpSHA384(
|
||||||
|
// Standard Dat parsing
|
||||||
|
string filename,
|
||||||
|
int sysid,
|
||||||
|
int srcid,
|
||||||
|
|
||||||
|
// Rom filtering
|
||||||
|
Filter filter,
|
||||||
|
|
||||||
|
// Rom renaming
|
||||||
|
bool trim,
|
||||||
|
bool single,
|
||||||
|
string root,
|
||||||
|
|
||||||
|
// Miscellaneous
|
||||||
|
Logger logger,
|
||||||
|
bool clean)
|
||||||
|
{
|
||||||
|
// Open a file reader
|
||||||
|
Encoding enc = Style.GetEncoding(filename);
|
||||||
|
StreamReader sr = new StreamReader(File.OpenRead(filename), enc);
|
||||||
|
|
||||||
|
while (!sr.EndOfStream)
|
||||||
|
{
|
||||||
|
string line = sr.ReadLine();
|
||||||
|
|
||||||
|
Rom rom = new Rom
|
||||||
|
{
|
||||||
|
Name = line.Split(' ')[1].Replace("*", String.Empty),
|
||||||
|
Size = -1,
|
||||||
|
SHA384 = line.Split(' ')[0],
|
||||||
|
ItemStatus = ItemStatus.None,
|
||||||
|
|
||||||
|
Machine = new Machine
|
||||||
|
{
|
||||||
|
Name = Path.GetFileNameWithoutExtension(filename),
|
||||||
|
},
|
||||||
|
|
||||||
|
SystemID = sysid,
|
||||||
|
SourceID = srcid,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Now process and add the rom
|
||||||
|
string key = "";
|
||||||
|
ParseAddHelper(rom, filter, trim, single, root, clean, logger, out key);
|
||||||
|
}
|
||||||
|
|
||||||
|
sr.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Parse a Redump SHA-512 and return all found games and roms within
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filename">Name of the file to be parsed</param>
|
||||||
|
/// <param name="sysid">System ID for the DAT</param>
|
||||||
|
/// <param name="srcid">Source ID for the DAT</param>
|
||||||
|
/// <param name="filter">Filter object for passing to the DatItem level</param>
|
||||||
|
/// <param name="trim">True if we are supposed to trim names to NTFS length, false otherwise</param>
|
||||||
|
/// <param name="single">True if all games should be replaced by '!', false otherwise</param>
|
||||||
|
/// <param name="root">String representing root directory to compare against for length calculation</param>
|
||||||
|
/// <param name="logger">Logger object for console and/or file output</param>
|
||||||
|
/// <param name="clean">True if game names are sanitized, false otherwise (default)</param>
|
||||||
|
private void ParseRedumpSHA512(
|
||||||
|
// Standard Dat parsing
|
||||||
|
string filename,
|
||||||
|
int sysid,
|
||||||
|
int srcid,
|
||||||
|
|
||||||
|
// Rom filtering
|
||||||
|
Filter filter,
|
||||||
|
|
||||||
|
// Rom renaming
|
||||||
|
bool trim,
|
||||||
|
bool single,
|
||||||
|
string root,
|
||||||
|
|
||||||
|
// Miscellaneous
|
||||||
|
Logger logger,
|
||||||
|
bool clean)
|
||||||
|
{
|
||||||
|
// Open a file reader
|
||||||
|
Encoding enc = Style.GetEncoding(filename);
|
||||||
|
StreamReader sr = new StreamReader(File.OpenRead(filename), enc);
|
||||||
|
|
||||||
|
while (!sr.EndOfStream)
|
||||||
|
{
|
||||||
|
string line = sr.ReadLine();
|
||||||
|
|
||||||
|
Rom rom = new Rom
|
||||||
|
{
|
||||||
|
Name = line.Split(' ')[1].Replace("*", String.Empty),
|
||||||
|
Size = -1,
|
||||||
|
SHA512 = line.Split(' ')[0],
|
||||||
|
ItemStatus = ItemStatus.None,
|
||||||
|
|
||||||
|
Machine = new Machine
|
||||||
|
{
|
||||||
|
Name = Path.GetFileNameWithoutExtension(filename),
|
||||||
|
},
|
||||||
|
|
||||||
|
SystemID = sysid,
|
||||||
|
SourceID = srcid,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Now process and add the rom
|
||||||
|
string key = "";
|
||||||
|
ParseAddHelper(rom, filter, trim, single, root, clean, logger, out key);
|
||||||
|
}
|
||||||
|
|
||||||
|
sr.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Parse a RomCenter DAT and return all found games and roms within
|
/// Parse a RomCenter DAT and return all found games and roms within
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -2816,19 +3020,25 @@ namespace SabreTools.Helper.Dats
|
|||||||
itemRom.MD5 = Style.CleanHashData(itemRom.MD5, Constants.MD5Length);
|
itemRom.MD5 = Style.CleanHashData(itemRom.MD5, Constants.MD5Length);
|
||||||
itemRom.SHA1 = Style.CleanHashData(itemRom.SHA1, Constants.SHA1Length);
|
itemRom.SHA1 = Style.CleanHashData(itemRom.SHA1, Constants.SHA1Length);
|
||||||
itemRom.SHA256 = Style.CleanHashData(itemRom.SHA256, Constants.SHA256Length);
|
itemRom.SHA256 = Style.CleanHashData(itemRom.SHA256, Constants.SHA256Length);
|
||||||
|
itemRom.SHA384 = Style.CleanHashData(itemRom.SHA384, Constants.SHA384Length);
|
||||||
|
itemRom.SHA512 = Style.CleanHashData(itemRom.SHA512, Constants.SHA512Length);
|
||||||
|
|
||||||
// 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 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 ((itemRom.Size == 0 || itemRom.Size == -1)
|
if ((itemRom.Size == 0 || itemRom.Size == -1)
|
||||||
&& ((itemRom.CRC == Constants.CRCZero || String.IsNullOrEmpty(itemRom.CRC))
|
&& ((itemRom.CRC == Constants.CRCZero || String.IsNullOrEmpty(itemRom.CRC))
|
||||||
|| itemRom.MD5 == Constants.MD5Zero
|
|| itemRom.MD5 == Constants.MD5Zero
|
||||||
|| itemRom.SHA1 == Constants.SHA1Zero
|
|| itemRom.SHA1 == Constants.SHA1Zero
|
||||||
|| itemRom.SHA256 == Constants.SHA256Zero))
|
|| itemRom.SHA256 == Constants.SHA256Zero
|
||||||
|
|| itemRom.SHA384 == Constants.SHA384Zero
|
||||||
|
|| itemRom.SHA512 == Constants.SHA512Zero))
|
||||||
{
|
{
|
||||||
itemRom.Size = Constants.SizeZero;
|
itemRom.Size = Constants.SizeZero;
|
||||||
itemRom.CRC = Constants.CRCZero;
|
itemRom.CRC = Constants.CRCZero;
|
||||||
itemRom.MD5 = Constants.MD5Zero;
|
itemRom.MD5 = Constants.MD5Zero;
|
||||||
itemRom.SHA1 = Constants.SHA1Zero;
|
itemRom.SHA1 = Constants.SHA1Zero;
|
||||||
itemRom.SHA256 = Constants.SHA256Zero;
|
itemRom.SHA256 = Constants.SHA256Zero;
|
||||||
|
itemRom.SHA384 = Constants.SHA384Zero;
|
||||||
|
itemRom.SHA512 = Constants.SHA512Zero;
|
||||||
}
|
}
|
||||||
// If the file has no size and it's not the above case, skip and log
|
// If the file has no size and it's not the above case, skip and log
|
||||||
else if (itemRom.ItemStatus != ItemStatus.Nodump && (itemRom.Size == 0 || itemRom.Size == -1))
|
else if (itemRom.ItemStatus != ItemStatus.Nodump && (itemRom.Size == 0 || itemRom.Size == -1))
|
||||||
@@ -2842,7 +3052,9 @@ namespace SabreTools.Helper.Dats
|
|||||||
&& String.IsNullOrEmpty(itemRom.CRC)
|
&& String.IsNullOrEmpty(itemRom.CRC)
|
||||||
&& String.IsNullOrEmpty(itemRom.MD5)
|
&& String.IsNullOrEmpty(itemRom.MD5)
|
||||||
&& String.IsNullOrEmpty(itemRom.SHA1)
|
&& String.IsNullOrEmpty(itemRom.SHA1)
|
||||||
&& String.IsNullOrEmpty(itemRom.SHA256))
|
&& String.IsNullOrEmpty(itemRom.SHA256)
|
||||||
|
&& String.IsNullOrEmpty(itemRom.SHA384)
|
||||||
|
&& String.IsNullOrEmpty(itemRom.SHA512))
|
||||||
{
|
{
|
||||||
logger.Verbose("Incomplete entry for \"" + itemRom.Name + "\" will be output as nodump");
|
logger.Verbose("Incomplete entry for \"" + itemRom.Name + "\" will be output as nodump");
|
||||||
itemRom.ItemStatus = ItemStatus.Nodump;
|
itemRom.ItemStatus = ItemStatus.Nodump;
|
||||||
@@ -2858,12 +3070,16 @@ namespace SabreTools.Helper.Dats
|
|||||||
itemDisk.MD5 = Style.CleanHashData(itemDisk.MD5, Constants.MD5Length);
|
itemDisk.MD5 = Style.CleanHashData(itemDisk.MD5, Constants.MD5Length);
|
||||||
itemDisk.SHA1 = Style.CleanHashData(itemDisk.SHA1, Constants.SHA1Length);
|
itemDisk.SHA1 = Style.CleanHashData(itemDisk.SHA1, Constants.SHA1Length);
|
||||||
itemDisk.SHA256 = Style.CleanHashData(itemDisk.SHA256, Constants.SHA256Length);
|
itemDisk.SHA256 = Style.CleanHashData(itemDisk.SHA256, Constants.SHA256Length);
|
||||||
|
itemDisk.SHA384 = Style.CleanHashData(itemDisk.SHA384, Constants.SHA384Length);
|
||||||
|
itemDisk.SHA512 = Style.CleanHashData(itemDisk.SHA512, Constants.SHA512Length);
|
||||||
|
|
||||||
// If the file has aboslutely no hashes, skip and log
|
// If the file has aboslutely no hashes, skip and log
|
||||||
if (itemDisk.ItemStatus != ItemStatus.Nodump
|
if (itemDisk.ItemStatus != ItemStatus.Nodump
|
||||||
&& String.IsNullOrEmpty(itemDisk.MD5)
|
&& String.IsNullOrEmpty(itemDisk.MD5)
|
||||||
&& String.IsNullOrEmpty(itemDisk.SHA1)
|
&& String.IsNullOrEmpty(itemDisk.SHA1)
|
||||||
&& String.IsNullOrEmpty(itemDisk.SHA256))
|
&& String.IsNullOrEmpty(itemDisk.SHA256)
|
||||||
|
&& String.IsNullOrEmpty(itemDisk.SHA384)
|
||||||
|
&& String.IsNullOrEmpty(itemDisk.SHA512))
|
||||||
{
|
{
|
||||||
logger.Verbose("Incomplete entry for \"" + itemDisk.Name + "\" will be output as nodump");
|
logger.Verbose("Incomplete entry for \"" + itemDisk.Name + "\" will be output as nodump");
|
||||||
itemDisk.ItemStatus = ItemStatus.Nodump;
|
itemDisk.ItemStatus = ItemStatus.Nodump;
|
||||||
@@ -2912,6 +3128,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5Count += (String.IsNullOrEmpty(((Disk)item).MD5) ? 0 : 1);
|
MD5Count += (String.IsNullOrEmpty(((Disk)item).MD5) ? 0 : 1);
|
||||||
SHA1Count += (String.IsNullOrEmpty(((Disk)item).SHA1) ? 0 : 1);
|
SHA1Count += (String.IsNullOrEmpty(((Disk)item).SHA1) ? 0 : 1);
|
||||||
SHA256Count += (String.IsNullOrEmpty(((Disk)item).SHA256) ? 0 : 1);
|
SHA256Count += (String.IsNullOrEmpty(((Disk)item).SHA256) ? 0 : 1);
|
||||||
|
SHA384Count += (String.IsNullOrEmpty(((Disk)item).SHA384) ? 0 : 1);
|
||||||
|
SHA512Count += (String.IsNullOrEmpty(((Disk)item).SHA512) ? 0 : 1);
|
||||||
BaddumpCount += (((Disk)item).ItemStatus == ItemStatus.BadDump ? 1 : 0);
|
BaddumpCount += (((Disk)item).ItemStatus == ItemStatus.BadDump ? 1 : 0);
|
||||||
NodumpCount += (((Disk)item).ItemStatus == ItemStatus.Nodump ? 1 : 0);
|
NodumpCount += (((Disk)item).ItemStatus == ItemStatus.Nodump ? 1 : 0);
|
||||||
break;
|
break;
|
||||||
@@ -2925,6 +3143,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5Count += (String.IsNullOrEmpty(((Rom)item).MD5) ? 0 : 1);
|
MD5Count += (String.IsNullOrEmpty(((Rom)item).MD5) ? 0 : 1);
|
||||||
SHA1Count += (String.IsNullOrEmpty(((Rom)item).SHA1) ? 0 : 1);
|
SHA1Count += (String.IsNullOrEmpty(((Rom)item).SHA1) ? 0 : 1);
|
||||||
SHA256Count += (String.IsNullOrEmpty(((Rom)item).SHA256) ? 0 : 1);
|
SHA256Count += (String.IsNullOrEmpty(((Rom)item).SHA256) ? 0 : 1);
|
||||||
|
SHA384Count += (String.IsNullOrEmpty(((Rom)item).SHA384) ? 0 : 1);
|
||||||
|
SHA512Count += (String.IsNullOrEmpty(((Rom)item).SHA512) ? 0 : 1);
|
||||||
BaddumpCount += (((Rom)item).ItemStatus == ItemStatus.BadDump ? 1 : 0);
|
BaddumpCount += (((Rom)item).ItemStatus == ItemStatus.BadDump ? 1 : 0);
|
||||||
NodumpCount += (((Rom)item).ItemStatus == ItemStatus.Nodump ? 1 : 0);
|
NodumpCount += (((Rom)item).ItemStatus == ItemStatus.Nodump ? 1 : 0);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -389,7 +389,7 @@ namespace SabreTools.Helper.Dats
|
|||||||
// If we're supposed to scan the file externally
|
// If we're supposed to scan the file externally
|
||||||
if (shouldExternalProcess)
|
if (shouldExternalProcess)
|
||||||
{
|
{
|
||||||
Rom rom = FileTools.GetFileInfo(file, logger, noMD5: quickScan, noSHA1: quickScan, header: headerToCheckAgainst);
|
Rom rom = FileTools.GetFileInfo(file, logger, omitFromScan: (quickScan ? Hash.DeepHashes : 0x0), header: headerToCheckAgainst);
|
||||||
usedExternally = RebuildIndividualFile(rom, file, outDir, tempSubDir, date, inverse, outputFormat,
|
usedExternally = RebuildIndividualFile(rom, file, outDir, tempSubDir, date, inverse, outputFormat,
|
||||||
romba, updateDat, false /* isZip */, headerToCheckAgainst, logger);
|
romba, updateDat, false /* isZip */, headerToCheckAgainst, logger);
|
||||||
}
|
}
|
||||||
@@ -423,7 +423,7 @@ namespace SabreTools.Helper.Dats
|
|||||||
List<string> extracted = Directory.EnumerateFiles(tempSubDir, "*", SearchOption.AllDirectories).ToList();
|
List<string> extracted = Directory.EnumerateFiles(tempSubDir, "*", SearchOption.AllDirectories).ToList();
|
||||||
foreach (string entry in extracted)
|
foreach (string entry in extracted)
|
||||||
{
|
{
|
||||||
Rom rom = FileTools.GetFileInfo(entry, logger, noMD5: quickScan, noSHA1: quickScan);
|
Rom rom = FileTools.GetFileInfo(entry, logger, omitFromScan: (quickScan ? Hash.DeepHashes : 0x0));
|
||||||
usedInternally &= RebuildIndividualFile(rom, entry, outDir, tempSubDir, date, inverse, outputFormat,
|
usedInternally &= RebuildIndividualFile(rom, entry, outDir, tempSubDir, date, inverse, outputFormat,
|
||||||
romba, updateDat, false /* isZip */, headerToCheckAgainst, logger);
|
romba, updateDat, false /* isZip */, headerToCheckAgainst, logger);
|
||||||
}
|
}
|
||||||
@@ -431,7 +431,7 @@ namespace SabreTools.Helper.Dats
|
|||||||
// Otherwise, just get the info on the file itself
|
// Otherwise, just get the info on the file itself
|
||||||
else if (File.Exists(file))
|
else if (File.Exists(file))
|
||||||
{
|
{
|
||||||
Rom rom = FileTools.GetFileInfo(file, logger, noMD5: quickScan, noSHA1: quickScan);
|
Rom rom = FileTools.GetFileInfo(file, logger, omitFromScan: (quickScan ? Hash.DeepHashes : 0x0));
|
||||||
usedExternally = RebuildIndividualFile(rom, file, outDir, tempSubDir, date, inverse, outputFormat,
|
usedExternally = RebuildIndividualFile(rom, file, outDir, tempSubDir, date, inverse, outputFormat,
|
||||||
romba, updateDat, false /* isZip */, headerToCheckAgainst, logger);
|
romba, updateDat, false /* isZip */, headerToCheckAgainst, logger);
|
||||||
}
|
}
|
||||||
@@ -914,7 +914,7 @@ namespace SabreTools.Helper.Dats
|
|||||||
foreach (string input in inputs)
|
foreach (string input in inputs)
|
||||||
{
|
{
|
||||||
// TODO: Eventually migrate noSHA256 to quickScan instead of true
|
// TODO: Eventually migrate noSHA256 to quickScan instead of true
|
||||||
PopulateFromDir(input, quickScan /* noMD5 */, quickScan /* noSHA1 */, true /* noSHA256 */, true /* bare */, false /* archivesAsFiles */,
|
PopulateFromDir(input, (quickScan ? Hash.DeepHashes : 0x0) /* omitFromScan */, true /* bare */, false /* archivesAsFiles */,
|
||||||
true /* enableGzip */, false /* addBlanks */, false /* addDate */, tempDir /* tempDir */, false /* copyFiles */,
|
true /* enableGzip */, false /* addBlanks */, false /* addDate */, tempDir /* tempDir */, false /* copyFiles */,
|
||||||
headerToCheckAgainst, 4 /* maxDegreeOfParallelism */, logger);
|
headerToCheckAgainst, 4 /* maxDegreeOfParallelism */, logger);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -180,7 +180,9 @@ namespace SabreTools.Helper.Dats
|
|||||||
&& ((Rom)rom).CRC == "null"
|
&& ((Rom)rom).CRC == "null"
|
||||||
&& ((Rom)rom).MD5 == "null"
|
&& ((Rom)rom).MD5 == "null"
|
||||||
&& ((Rom)rom).SHA1 == "null"
|
&& ((Rom)rom).SHA1 == "null"
|
||||||
&& ((Rom)rom).SHA256 == "null")
|
&& ((Rom)rom).SHA256 == "null"
|
||||||
|
&& ((Rom)rom).SHA384 == "null"
|
||||||
|
&& ((Rom)rom).SHA512 == "null")
|
||||||
{
|
{
|
||||||
logger.Verbose("Empty folder found: " + rom.Machine.Name);
|
logger.Verbose("Empty folder found: " + rom.Machine.Name);
|
||||||
|
|
||||||
@@ -196,6 +198,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
((Rom)rom).MD5 = Constants.MD5Zero;
|
((Rom)rom).MD5 = Constants.MD5Zero;
|
||||||
((Rom)rom).SHA1 = Constants.SHA1Zero;
|
((Rom)rom).SHA1 = Constants.SHA1Zero;
|
||||||
((Rom)rom).SHA256 = Constants.SHA256Zero;
|
((Rom)rom).SHA256 = Constants.SHA256Zero;
|
||||||
|
((Rom)rom).SHA384 = Constants.SHA384Zero;
|
||||||
|
((Rom)rom).SHA512 = Constants.SHA512Zero;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Otherwise, set the new path and such, write out, and continue
|
// Otherwise, set the new path and such, write out, and continue
|
||||||
@@ -696,6 +700,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ (!String.IsNullOrEmpty(((Disk)rom).MD5) ? " md5 " + ((Disk)rom).MD5.ToLowerInvariant() : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).MD5) ? " md5 " + ((Disk)rom).MD5.ToLowerInvariant() : "")
|
||||||
+ (!String.IsNullOrEmpty(((Disk)rom).SHA1) ? " sha1 " + ((Disk)rom).SHA1.ToLowerInvariant() : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA1) ? " sha1 " + ((Disk)rom).SHA1.ToLowerInvariant() : "")
|
||||||
+ (!String.IsNullOrEmpty(((Disk)rom).SHA256) ? " sha256 " + ((Disk)rom).SHA256.ToLowerInvariant() : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA256) ? " sha256 " + ((Disk)rom).SHA256.ToLowerInvariant() : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA384) ? " sha384 " + ((Disk)rom).SHA384.ToLowerInvariant() : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA512) ? " sha512 " + ((Disk)rom).SHA512.ToLowerInvariant() : "")
|
||||||
+ (((Disk)rom).ItemStatus != ItemStatus.None ? " flags " + ((Disk)rom).ItemStatus.ToString().ToLowerInvariant() : "")
|
+ (((Disk)rom).ItemStatus != ItemStatus.None ? " flags " + ((Disk)rom).ItemStatus.ToString().ToLowerInvariant() : "")
|
||||||
+ " )\n";
|
+ " )\n";
|
||||||
break;
|
break;
|
||||||
@@ -716,6 +722,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ (!String.IsNullOrEmpty(((Rom)rom).MD5) ? " md5 " + ((Rom)rom).MD5.ToLowerInvariant() : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).MD5) ? " md5 " + ((Rom)rom).MD5.ToLowerInvariant() : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).SHA1) ? " sha1 " + ((Rom)rom).SHA1.ToLowerInvariant() : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA1) ? " sha1 " + ((Rom)rom).SHA1.ToLowerInvariant() : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).SHA256) ? " sha256 " + ((Rom)rom).SHA256.ToLowerInvariant() : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA256) ? " sha256 " + ((Rom)rom).SHA256.ToLowerInvariant() : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA384) ? " sha384 " + ((Rom)rom).SHA384.ToLowerInvariant() : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA512) ? " sha512 " + ((Rom)rom).SHA512.ToLowerInvariant() : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).Date) ? " date \"" + ((Rom)rom).Date + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).Date) ? " date \"" + ((Rom)rom).Date + "\"" : "")
|
||||||
+ (((Rom)rom).ItemStatus != ItemStatus.None ? " flags " + ((Rom)rom).ItemStatus.ToString().ToLowerInvariant() : "")
|
+ (((Rom)rom).ItemStatus != ItemStatus.None ? " flags " + ((Rom)rom).ItemStatus.ToString().ToLowerInvariant() : "")
|
||||||
+ " )\n";
|
+ " )\n";
|
||||||
@@ -747,6 +755,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Rom)rom).MD5)
|
.Replace("%md5%", ((Rom)rom).MD5)
|
||||||
.Replace("%sha1%", ((Rom)rom).SHA1)
|
.Replace("%sha1%", ((Rom)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Rom)rom).SHA256)
|
.Replace("%sha256%", ((Rom)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Rom)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Rom)rom).SHA512)
|
||||||
.Replace("%size%", ((Rom)rom).Size.ToString());
|
.Replace("%size%", ((Rom)rom).Size.ToString());
|
||||||
post = post
|
post = post
|
||||||
.Replace("%game%", rom.Machine.Name)
|
.Replace("%game%", rom.Machine.Name)
|
||||||
@@ -755,6 +765,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Rom)rom).MD5)
|
.Replace("%md5%", ((Rom)rom).MD5)
|
||||||
.Replace("%sha1%", ((Rom)rom).SHA1)
|
.Replace("%sha1%", ((Rom)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Rom)rom).SHA256)
|
.Replace("%sha256%", ((Rom)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Rom)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Rom)rom).SHA512)
|
||||||
.Replace("%size%", ((Rom)rom).Size.ToString());
|
.Replace("%size%", ((Rom)rom).Size.ToString());
|
||||||
}
|
}
|
||||||
else if (rom.Type == ItemType.Disk)
|
else if (rom.Type == ItemType.Disk)
|
||||||
@@ -767,6 +779,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Disk)rom).MD5)
|
.Replace("%md5%", ((Disk)rom).MD5)
|
||||||
.Replace("%sha1%", ((Disk)rom).SHA1)
|
.Replace("%sha1%", ((Disk)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Disk)rom).SHA256)
|
.Replace("%sha256%", ((Disk)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Disk)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Disk)rom).SHA512)
|
||||||
.Replace("%size%", string.Empty);;
|
.Replace("%size%", string.Empty);;
|
||||||
post = post
|
post = post
|
||||||
.Replace("%game%", rom.Machine.Name)
|
.Replace("%game%", rom.Machine.Name)
|
||||||
@@ -775,6 +789,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Disk)rom).MD5)
|
.Replace("%md5%", ((Disk)rom).MD5)
|
||||||
.Replace("%sha1%", ((Disk)rom).SHA1)
|
.Replace("%sha1%", ((Disk)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Disk)rom).SHA256)
|
.Replace("%sha256%", ((Disk)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Disk)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Disk)rom).SHA512)
|
||||||
.Replace("%size%", string.Empty);;
|
.Replace("%size%", string.Empty);;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -811,6 +827,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ ",\"" + ((Rom)rom).MD5 + "\""
|
+ ",\"" + ((Rom)rom).MD5 + "\""
|
||||||
+ ",\"" + ((Rom)rom).SHA1 + "\""
|
+ ",\"" + ((Rom)rom).SHA1 + "\""
|
||||||
+ ",\"" + ((Rom)rom).SHA256 + "\""
|
+ ",\"" + ((Rom)rom).SHA256 + "\""
|
||||||
|
// + ",\"" + ((Rom)rom).SHA384 + "\""
|
||||||
|
// + ",\"" + ((Rom)rom).SHA512 + "\""
|
||||||
+ "," + (((Rom)rom).ItemStatus != ItemStatus.None ? "\"" + ((Rom)rom).ItemStatus.ToString() + "\"" : "\"\"");
|
+ "," + (((Rom)rom).ItemStatus != ItemStatus.None ? "\"" + ((Rom)rom).ItemStatus.ToString() + "\"" : "\"\"");
|
||||||
state += pre + inline + post + "\n";
|
state += pre + inline + post + "\n";
|
||||||
}
|
}
|
||||||
@@ -829,6 +847,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ ",\"" + ((Disk)rom).MD5 + "\""
|
+ ",\"" + ((Disk)rom).MD5 + "\""
|
||||||
+ ",\"" + ((Disk)rom).SHA1 + "\""
|
+ ",\"" + ((Disk)rom).SHA1 + "\""
|
||||||
+ ",\"" + ((Disk)rom).SHA256 + "\""
|
+ ",\"" + ((Disk)rom).SHA256 + "\""
|
||||||
|
// + ",\"" + ((Rom)rom).SHA384 + "\""
|
||||||
|
// + ",\"" + ((Rom)rom).SHA512 + "\""
|
||||||
+ "," + (((Disk)rom).ItemStatus != ItemStatus.None ? "\"" + ((Disk)rom).ItemStatus.ToString() + "\"" : "\"\"");
|
+ "," + (((Disk)rom).ItemStatus != ItemStatus.None ? "\"" + ((Disk)rom).ItemStatus.ToString() + "\"" : "\"\"");
|
||||||
state += pre + inline + post + "\n";
|
state += pre + inline + post + "\n";
|
||||||
}
|
}
|
||||||
@@ -872,6 +892,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ (!String.IsNullOrEmpty(((Disk)rom).MD5) ? " md5=\"" + ((Disk)rom).MD5.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).MD5) ? " md5=\"" + ((Disk)rom).MD5.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Disk)rom).SHA1) ? " sha1=\"" + ((Disk)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA1) ? " sha1=\"" + ((Disk)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Disk)rom).SHA256) ? " sha256=\"" + ((Disk)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA256) ? " sha256=\"" + ((Disk)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA384) ? " sha384=\"" + ((Disk)rom).SHA384.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA512) ? " sha512=\"" + ((Disk)rom).SHA512.ToLowerInvariant() + "\"" : "")
|
||||||
+ (((Disk)rom).ItemStatus != ItemStatus.None ? " status=\"" + ((Disk)rom).ItemStatus.ToString().ToLowerInvariant() + "\"" : "")
|
+ (((Disk)rom).ItemStatus != ItemStatus.None ? " status=\"" + ((Disk)rom).ItemStatus.ToString().ToLowerInvariant() + "\"" : "")
|
||||||
+ "/>\n";
|
+ "/>\n";
|
||||||
break;
|
break;
|
||||||
@@ -892,6 +914,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ (!String.IsNullOrEmpty(((Rom)rom).MD5) ? " md5=\"" + ((Rom)rom).MD5.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).MD5) ? " md5=\"" + ((Rom)rom).MD5.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).SHA1) ? " sha1=\"" + ((Rom)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA1) ? " sha1=\"" + ((Rom)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).SHA256) ? " sha256=\"" + ((Rom)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA256) ? " sha256=\"" + ((Rom)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA384) ? " sha384=\"" + ((Rom)rom).SHA384.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA512) ? " sha512=\"" + ((Rom)rom).SHA512.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).Date) ? " date=\"" + ((Rom)rom).Date + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).Date) ? " date=\"" + ((Rom)rom).Date + "\"" : "")
|
||||||
+ (((Rom)rom).ItemStatus != ItemStatus.None ? " status=\"" + ((Rom)rom).ItemStatus.ToString().ToLowerInvariant() + "\"" : "")
|
+ (((Rom)rom).ItemStatus != ItemStatus.None ? " status=\"" + ((Rom)rom).ItemStatus.ToString().ToLowerInvariant() + "\"" : "")
|
||||||
+ "/>\n";
|
+ "/>\n";
|
||||||
@@ -916,6 +940,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Rom)rom).MD5)
|
.Replace("%md5%", ((Rom)rom).MD5)
|
||||||
.Replace("%sha1%", ((Rom)rom).SHA1)
|
.Replace("%sha1%", ((Rom)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Rom)rom).SHA256)
|
.Replace("%sha256%", ((Rom)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Rom)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Rom)rom).SHA512)
|
||||||
.Replace("%size%", ((Rom)rom).Size.ToString());
|
.Replace("%size%", ((Rom)rom).Size.ToString());
|
||||||
post = post
|
post = post
|
||||||
.Replace("%game%", rom.Machine.Name)
|
.Replace("%game%", rom.Machine.Name)
|
||||||
@@ -924,6 +950,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Rom)rom).MD5)
|
.Replace("%md5%", ((Rom)rom).MD5)
|
||||||
.Replace("%sha1%", ((Rom)rom).SHA1)
|
.Replace("%sha1%", ((Rom)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Rom)rom).SHA256)
|
.Replace("%sha256%", ((Rom)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Rom)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Rom)rom).SHA512)
|
||||||
.Replace("%size%", ((Rom)rom).Size.ToString());
|
.Replace("%size%", ((Rom)rom).Size.ToString());
|
||||||
}
|
}
|
||||||
else if (rom.Type == ItemType.Disk)
|
else if (rom.Type == ItemType.Disk)
|
||||||
@@ -936,6 +964,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Disk)rom).MD5)
|
.Replace("%md5%", ((Disk)rom).MD5)
|
||||||
.Replace("%sha1%", ((Disk)rom).SHA1)
|
.Replace("%sha1%", ((Disk)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Disk)rom).SHA256)
|
.Replace("%sha256%", ((Disk)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Disk)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Disk)rom).SHA512)
|
||||||
.Replace("%size%", string.Empty);
|
.Replace("%size%", string.Empty);
|
||||||
post = post
|
post = post
|
||||||
.Replace("%game%", rom.Machine.Name)
|
.Replace("%game%", rom.Machine.Name)
|
||||||
@@ -944,6 +974,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Disk)rom).MD5)
|
.Replace("%md5%", ((Disk)rom).MD5)
|
||||||
.Replace("%sha1%", ((Disk)rom).SHA1)
|
.Replace("%sha1%", ((Disk)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Disk)rom).SHA256)
|
.Replace("%sha256%", ((Disk)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Disk)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Disk)rom).SHA512)
|
||||||
.Replace("%size%", string.Empty);
|
.Replace("%size%", string.Empty);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1112,6 +1144,26 @@ namespace SabreTools.Helper.Dats
|
|||||||
state += ((Disk)rom).SHA256 + " *" + (GameName ? rom.Machine.Name + Path.DirectorySeparatorChar : "") + rom.Name + "\n";
|
state += ((Disk)rom).SHA256 + " *" + (GameName ? rom.Machine.Name + Path.DirectorySeparatorChar : "") + rom.Name + "\n";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DatFormat.RedumpSHA384:
|
||||||
|
if (rom.Type == ItemType.Rom)
|
||||||
|
{
|
||||||
|
state += ((Rom)rom).SHA384 + " *" + (GameName ? rom.Machine.Name + Path.DirectorySeparatorChar : "") + rom.Name + "\n";
|
||||||
|
}
|
||||||
|
else if (rom.Type == ItemType.Disk)
|
||||||
|
{
|
||||||
|
state += ((Disk)rom).SHA384 + " *" + (GameName ? rom.Machine.Name + Path.DirectorySeparatorChar : "") + rom.Name + "\n";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DatFormat.RedumpSHA512:
|
||||||
|
if (rom.Type == ItemType.Rom)
|
||||||
|
{
|
||||||
|
state += ((Rom)rom).SHA512 + " *" + (GameName ? rom.Machine.Name + Path.DirectorySeparatorChar : "") + rom.Name + "\n";
|
||||||
|
}
|
||||||
|
else if (rom.Type == ItemType.Disk)
|
||||||
|
{
|
||||||
|
state += ((Disk)rom).SHA512 + " *" + (GameName ? rom.Machine.Name + Path.DirectorySeparatorChar : "") + rom.Name + "\n";
|
||||||
|
}
|
||||||
|
break;
|
||||||
case DatFormat.RomCenter:
|
case DatFormat.RomCenter:
|
||||||
if (rom.Type == ItemType.Rom)
|
if (rom.Type == ItemType.Rom)
|
||||||
{
|
{
|
||||||
@@ -1161,6 +1213,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ (!String.IsNullOrEmpty(((Disk)rom).MD5) ? " md5=\"" + ((Disk)rom).MD5.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).MD5) ? " md5=\"" + ((Disk)rom).MD5.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Disk)rom).SHA1) ? " sha1=\"" + ((Disk)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA1) ? " sha1=\"" + ((Disk)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Disk)rom).SHA256) ? " sha256=\"" + ((Disk)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA256) ? " sha256=\"" + ((Disk)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA384) ? " sha384=\"" + ((Disk)rom).SHA384.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA512) ? " sha512=\"" + ((Disk)rom).SHA512.ToLowerInvariant() + "\"" : "")
|
||||||
+ (((Disk)rom).ItemStatus != ItemStatus.None ? prefix + "/>\n" + prefix + "\t<flags>\n" +
|
+ (((Disk)rom).ItemStatus != ItemStatus.None ? prefix + "/>\n" + prefix + "\t<flags>\n" +
|
||||||
prefix + "\t\t<flag name=\"status\" value=\"" + ((Disk)rom).ItemStatus.ToString().ToLowerInvariant() + "\"/>\n" +
|
prefix + "\t\t<flag name=\"status\" value=\"" + ((Disk)rom).ItemStatus.ToString().ToLowerInvariant() + "\"/>\n" +
|
||||||
prefix + "\t</flags>\n" +
|
prefix + "\t</flags>\n" +
|
||||||
@@ -1183,6 +1237,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ (!String.IsNullOrEmpty(((Rom)rom).MD5) ? " md5=\"" + ((Rom)rom).MD5.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).MD5) ? " md5=\"" + ((Rom)rom).MD5.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).SHA1) ? " sha1=\"" + ((Rom)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA1) ? " sha1=\"" + ((Rom)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).SHA256) ? " sha256=\"" + ((Rom)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA256) ? " sha256=\"" + ((Rom)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA384) ? " sha384=\"" + ((Rom)rom).SHA384.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA512) ? " sha512=\"" + ((Rom)rom).SHA512.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).Date) ? " date=\"" + ((Rom)rom).Date + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).Date) ? " date=\"" + ((Rom)rom).Date + "\"" : "")
|
||||||
+ (((Rom)rom).ItemStatus != ItemStatus.None ? prefix + "/>\n" + prefix + "\t<flags>\n" +
|
+ (((Rom)rom).ItemStatus != ItemStatus.None ? prefix + "/>\n" + prefix + "\t<flags>\n" +
|
||||||
prefix + "\t\t<flag name=\"status\" value=\"" + ((Rom)rom).ItemStatus.ToString().ToLowerInvariant() + "\"/>\n" +
|
prefix + "\t\t<flag name=\"status\" value=\"" + ((Rom)rom).ItemStatus.ToString().ToLowerInvariant() + "\"/>\n" +
|
||||||
@@ -1230,6 +1286,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ (!String.IsNullOrEmpty(((Disk)rom).MD5) ? " md5=\"" + ((Disk)rom).MD5.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).MD5) ? " md5=\"" + ((Disk)rom).MD5.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Disk)rom).SHA1) ? " sha1=\"" + ((Disk)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA1) ? " sha1=\"" + ((Disk)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Disk)rom).SHA256) ? " sha256=\"" + ((Disk)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA256) ? " sha256=\"" + ((Disk)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA384) ? " sha384=\"" + ((Disk)rom).SHA384.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Disk)rom).SHA512) ? " sha512=\"" + ((Disk)rom).SHA512.ToLowerInvariant() + "\"" : "")
|
||||||
+ (((Disk)rom).ItemStatus != ItemStatus.None ? " status=\"" + ((Disk)rom).ItemStatus.ToString().ToLowerInvariant() + "\"" : "")
|
+ (((Disk)rom).ItemStatus != ItemStatus.None ? " status=\"" + ((Disk)rom).ItemStatus.ToString().ToLowerInvariant() + "\"" : "")
|
||||||
+ "/>\n"
|
+ "/>\n"
|
||||||
+ "\t\t\t</diskarea>\n";
|
+ "\t\t\t</diskarea>\n";
|
||||||
@@ -1256,6 +1314,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ (!String.IsNullOrEmpty(((Rom)rom).MD5) ? " md5=\"" + ((Rom)rom).MD5.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).MD5) ? " md5=\"" + ((Rom)rom).MD5.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).SHA1) ? " sha1=\"" + ((Rom)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA1) ? " sha1=\"" + ((Rom)rom).SHA1.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).SHA256) ? " sha256=\"" + ((Rom)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA256) ? " sha256=\"" + ((Rom)rom).SHA256.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA384) ? " sha384=\"" + ((Rom)rom).SHA384.ToLowerInvariant() + "\"" : "")
|
||||||
|
+ (!String.IsNullOrEmpty(((Rom)rom).SHA512) ? " sha512=\"" + ((Rom)rom).SHA512.ToLowerInvariant() + "\"" : "")
|
||||||
+ (!String.IsNullOrEmpty(((Rom)rom).Date) ? " date=\"" + ((Rom)rom).Date + "\"" : "")
|
+ (!String.IsNullOrEmpty(((Rom)rom).Date) ? " date=\"" + ((Rom)rom).Date + "\"" : "")
|
||||||
+ (((Rom)rom).ItemStatus != ItemStatus.None ? " status=\"" + ((Rom)rom).ItemStatus.ToString().ToLowerInvariant() + "\"" : "")
|
+ (((Rom)rom).ItemStatus != ItemStatus.None ? " status=\"" + ((Rom)rom).ItemStatus.ToString().ToLowerInvariant() + "\"" : "")
|
||||||
+ "/>\n"
|
+ "/>\n"
|
||||||
@@ -1292,6 +1352,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Rom)rom).MD5)
|
.Replace("%md5%", ((Rom)rom).MD5)
|
||||||
.Replace("%sha1%", ((Rom)rom).SHA1)
|
.Replace("%sha1%", ((Rom)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Rom)rom).SHA256)
|
.Replace("%sha256%", ((Rom)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Rom)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Rom)rom).SHA512)
|
||||||
.Replace("%size%", ((Rom)rom).Size.ToString());
|
.Replace("%size%", ((Rom)rom).Size.ToString());
|
||||||
post = post
|
post = post
|
||||||
.Replace("%game%", rom.Machine.Name)
|
.Replace("%game%", rom.Machine.Name)
|
||||||
@@ -1300,6 +1362,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Rom)rom).MD5)
|
.Replace("%md5%", ((Rom)rom).MD5)
|
||||||
.Replace("%sha1%", ((Rom)rom).SHA1)
|
.Replace("%sha1%", ((Rom)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Rom)rom).SHA256)
|
.Replace("%sha256%", ((Rom)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Rom)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Rom)rom).SHA512)
|
||||||
.Replace("%size%", ((Rom)rom).Size.ToString());
|
.Replace("%size%", ((Rom)rom).Size.ToString());
|
||||||
}
|
}
|
||||||
else if (rom.Type == ItemType.Disk)
|
else if (rom.Type == ItemType.Disk)
|
||||||
@@ -1312,6 +1376,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Disk)rom).MD5)
|
.Replace("%md5%", ((Disk)rom).MD5)
|
||||||
.Replace("%sha1%", ((Disk)rom).SHA1)
|
.Replace("%sha1%", ((Disk)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Disk)rom).SHA256)
|
.Replace("%sha256%", ((Disk)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Disk)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Disk)rom).SHA512)
|
||||||
.Replace("%size%", string.Empty);
|
.Replace("%size%", string.Empty);
|
||||||
post = post
|
post = post
|
||||||
.Replace("%game%", rom.Machine.Name)
|
.Replace("%game%", rom.Machine.Name)
|
||||||
@@ -1320,6 +1386,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", ((Disk)rom).MD5)
|
.Replace("%md5%", ((Disk)rom).MD5)
|
||||||
.Replace("%sha1%", ((Disk)rom).SHA1)
|
.Replace("%sha1%", ((Disk)rom).SHA1)
|
||||||
.Replace("%sha256%", ((Disk)rom).SHA256)
|
.Replace("%sha256%", ((Disk)rom).SHA256)
|
||||||
|
.Replace("%sha384%", ((Disk)rom).SHA384)
|
||||||
|
.Replace("%sha512%", ((Disk)rom).SHA512)
|
||||||
.Replace("%size%", string.Empty);;
|
.Replace("%size%", string.Empty);;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -1332,6 +1400,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", string.Empty)
|
.Replace("%md5%", string.Empty)
|
||||||
.Replace("%sha1%", string.Empty)
|
.Replace("%sha1%", string.Empty)
|
||||||
.Replace("%sha256%", string.Empty)
|
.Replace("%sha256%", string.Empty)
|
||||||
|
.Replace("%sha384%", string.Empty)
|
||||||
|
.Replace("%sha512%", string.Empty)
|
||||||
.Replace("%size%", string.Empty);
|
.Replace("%size%", string.Empty);
|
||||||
post = post
|
post = post
|
||||||
.Replace("%game%", rom.Machine.Name)
|
.Replace("%game%", rom.Machine.Name)
|
||||||
@@ -1340,6 +1410,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
.Replace("%md5%", string.Empty)
|
.Replace("%md5%", string.Empty)
|
||||||
.Replace("%sha1%", string.Empty)
|
.Replace("%sha1%", string.Empty)
|
||||||
.Replace("%sha256%", string.Empty)
|
.Replace("%sha256%", string.Empty)
|
||||||
|
.Replace("%sha384%", string.Empty)
|
||||||
|
.Replace("%sha512%", string.Empty)
|
||||||
.Replace("%size%", string.Empty);;
|
.Replace("%size%", string.Empty);;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1359,6 +1431,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ "\t\"" + ((Rom)rom).MD5 + "\""
|
+ "\t\"" + ((Rom)rom).MD5 + "\""
|
||||||
+ "\t\"" + ((Rom)rom).SHA1 + "\""
|
+ "\t\"" + ((Rom)rom).SHA1 + "\""
|
||||||
+ "\t\"" + ((Rom)rom).SHA256 + "\""
|
+ "\t\"" + ((Rom)rom).SHA256 + "\""
|
||||||
|
// + "\t\"" + ((Rom)rom).SHA384 + "\""
|
||||||
|
// + "\t\"" + ((Rom)rom).SHA512 + "\""
|
||||||
+ "\t" + (((Rom)rom).ItemStatus != ItemStatus.None ? "\"" + ((Rom)rom).ItemStatus.ToString() + "\"" : "\"\"");
|
+ "\t" + (((Rom)rom).ItemStatus != ItemStatus.None ? "\"" + ((Rom)rom).ItemStatus.ToString() + "\"" : "\"\"");
|
||||||
state += pre + inline + post + "\n";
|
state += pre + inline + post + "\n";
|
||||||
}
|
}
|
||||||
@@ -1377,6 +1451,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
+ "\t\"" + ((Disk)rom).MD5 + "\""
|
+ "\t\"" + ((Disk)rom).MD5 + "\""
|
||||||
+ "\t\"" + ((Disk)rom).SHA1 + "\""
|
+ "\t\"" + ((Disk)rom).SHA1 + "\""
|
||||||
+ "\t\"" + ((Disk)rom).SHA256 + "\""
|
+ "\t\"" + ((Disk)rom).SHA256 + "\""
|
||||||
|
// + "\t\"" + ((Disk)rom).SHA384 + "\""
|
||||||
|
// + "\t\"" + ((Disk)rom).SHA512 + "\""
|
||||||
+ "\t" + (((Disk)rom).ItemStatus != ItemStatus.None ? "\"" + ((Disk)rom).ItemStatus.ToString() + "\"" : "\"\"");
|
+ "\t" + (((Disk)rom).ItemStatus != ItemStatus.None ? "\"" + ((Disk)rom).ItemStatus.ToString() + "\"" : "\"\"");
|
||||||
state += pre + inline + post + "\n";
|
state += pre + inline + post + "\n";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
_md5 = "null";
|
_md5 = "null";
|
||||||
_sha1 = "null";
|
_sha1 = "null";
|
||||||
_sha256 = "null";
|
_sha256 = "null";
|
||||||
|
_sha384 = "null";
|
||||||
|
_sha512 = "null";
|
||||||
_itemStatus = ItemStatus.None;
|
_itemStatus = ItemStatus.None;
|
||||||
|
|
||||||
_machine = new Machine
|
_machine = new Machine
|
||||||
@@ -104,6 +106,8 @@ namespace SabreTools.Helper.Dats
|
|||||||
MD5 = this.MD5,
|
MD5 = this.MD5,
|
||||||
SHA1 = this.SHA1,
|
SHA1 = this.SHA1,
|
||||||
SHA256 = this.SHA256,
|
SHA256 = this.SHA256,
|
||||||
|
SHA384 = this.SHA384,
|
||||||
|
SHA512 = this.SHA512,
|
||||||
ItemStatus = this.ItemStatus,
|
ItemStatus = this.ItemStatus,
|
||||||
Size = this.Size,
|
Size = this.Size,
|
||||||
CRC = this.CRC,
|
CRC = this.CRC,
|
||||||
@@ -138,7 +142,9 @@ namespace SabreTools.Helper.Dats
|
|||||||
&& ((String.IsNullOrEmpty(this.CRC) || String.IsNullOrEmpty(newOther.CRC)) || this.CRC == newOther.CRC)
|
&& ((String.IsNullOrEmpty(this.CRC) || String.IsNullOrEmpty(newOther.CRC)) || this.CRC == newOther.CRC)
|
||||||
&& ((String.IsNullOrEmpty(this.MD5) || String.IsNullOrEmpty(newOther.MD5)) || this.MD5 == newOther.MD5)
|
&& ((String.IsNullOrEmpty(this.MD5) || String.IsNullOrEmpty(newOther.MD5)) || this.MD5 == newOther.MD5)
|
||||||
&& ((String.IsNullOrEmpty(this.SHA1) || String.IsNullOrEmpty(newOther.SHA1)) || this.SHA1 == newOther.SHA1)
|
&& ((String.IsNullOrEmpty(this.SHA1) || String.IsNullOrEmpty(newOther.SHA1)) || this.SHA1 == newOther.SHA1)
|
||||||
&& ((String.IsNullOrEmpty(this.SHA256) || String.IsNullOrEmpty(newOther.SHA256)) || this.SHA256 == newOther.SHA256))
|
&& ((String.IsNullOrEmpty(this.SHA256) || String.IsNullOrEmpty(newOther.SHA256)) || this.SHA256 == newOther.SHA256)
|
||||||
|
&& ((String.IsNullOrEmpty(this.SHA384) || String.IsNullOrEmpty(newOther.SHA384)) || this.SHA384 == newOther.SHA384)
|
||||||
|
&& ((String.IsNullOrEmpty(this.SHA512) || String.IsNullOrEmpty(newOther.SHA512)) || this.SHA512 == newOther.SHA512))
|
||||||
{
|
{
|
||||||
dupefound = true;
|
dupefound = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,7 +73,8 @@ namespace SabreTools.Helper.Tools
|
|||||||
{
|
{
|
||||||
ext = ext.Substring(1);
|
ext = ext.Substring(1);
|
||||||
}
|
}
|
||||||
if (ext != "csv" && ext != "dat" && ext != "md5" && ext != "sfv" && ext != "sha1" && ext != "tsv" && ext != "txt" && ext != "xml")
|
if (ext != "csv" && ext != "dat" && ext != "md5" && ext != "sfv" && ext != "sha1"
|
||||||
|
&& ext != "sha384" && ext != "sha512" && ext != "tsv" && ext != "txt" && ext != "xml")
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -105,6 +106,14 @@ namespace SabreTools.Helper.Tools
|
|||||||
{
|
{
|
||||||
return DatFormat.RedumpSHA256;
|
return DatFormat.RedumpSHA256;
|
||||||
}
|
}
|
||||||
|
if (ext == "sha384")
|
||||||
|
{
|
||||||
|
return DatFormat.RedumpSHA384;
|
||||||
|
}
|
||||||
|
if (ext == "sha512")
|
||||||
|
{
|
||||||
|
return DatFormat.RedumpSHA512;
|
||||||
|
}
|
||||||
|
|
||||||
// For everything else, we need to read it
|
// For everything else, we need to read it
|
||||||
try
|
try
|
||||||
|
|||||||
Reference in New Issue
Block a user