mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[DatFile] Clean up CMP parsing, add exception handling
This commit is contained in:
@@ -101,50 +101,57 @@ namespace SabreTools.Helper.Dats
|
|||||||
DatFormat = (DatFormat == 0 ? FileTools.GetDatFormat(filename, logger) : DatFormat);
|
DatFormat = (DatFormat == 0 ? FileTools.GetDatFormat(filename, logger) : DatFormat);
|
||||||
|
|
||||||
// Now parse the correct type of DAT
|
// Now parse the correct type of DAT
|
||||||
switch (FileTools.GetDatFormat(filename, logger))
|
try
|
||||||
{
|
{
|
||||||
case DatFormat.AttractMode:
|
switch (FileTools.GetDatFormat(filename, logger))
|
||||||
ParseAttractMode(filename, sysid, srcid, filter, trim, single, root, logger, keep, clean, descAsName);
|
{
|
||||||
break;
|
case DatFormat.AttractMode:
|
||||||
case DatFormat.ClrMamePro:
|
ParseAttractMode(filename, sysid, srcid, filter, trim, single, root, logger, keep, clean, descAsName);
|
||||||
case DatFormat.DOSCenter:
|
break;
|
||||||
ParseCMP(filename, sysid, srcid, filter, trim, single, root, logger, keep, clean, descAsName);
|
case DatFormat.ClrMamePro:
|
||||||
break;
|
case DatFormat.DOSCenter:
|
||||||
case DatFormat.CSV:
|
ParseCMP(filename, sysid, srcid, filter, trim, single, root, logger, keep, clean, descAsName);
|
||||||
ParseCSVTSV(filename, sysid, srcid, ',', filter, trim, single, root, logger, keep, clean, descAsName);
|
break;
|
||||||
break;
|
case DatFormat.CSV:
|
||||||
case DatFormat.Logiqx:
|
ParseCSVTSV(filename, sysid, srcid, ',', filter, trim, single, root, logger, keep, clean, descAsName);
|
||||||
case DatFormat.OfflineList:
|
break;
|
||||||
case DatFormat.SabreDat:
|
case DatFormat.Logiqx:
|
||||||
case DatFormat.SoftwareList:
|
case DatFormat.OfflineList:
|
||||||
ParseGenericXML(filename, sysid, srcid, filter, trim, single, root, logger, keep, clean, descAsName);
|
case DatFormat.SabreDat:
|
||||||
break;
|
case DatFormat.SoftwareList:
|
||||||
case DatFormat.RedumpMD5:
|
ParseGenericXML(filename, sysid, srcid, filter, trim, single, root, logger, keep, clean, descAsName);
|
||||||
ParseRedumpMD5(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
break;
|
||||||
break;
|
case DatFormat.RedumpMD5:
|
||||||
case DatFormat.RedumpSFV:
|
ParseRedumpMD5(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
||||||
ParseRedumpSFV(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
break;
|
||||||
break;
|
case DatFormat.RedumpSFV:
|
||||||
case DatFormat.RedumpSHA1:
|
ParseRedumpSFV(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
||||||
ParseRedumpSHA1(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
break;
|
||||||
break;
|
case DatFormat.RedumpSHA1:
|
||||||
case DatFormat.RedumpSHA256:
|
ParseRedumpSHA1(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
||||||
ParseRedumpSHA256(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
break;
|
||||||
break;
|
case DatFormat.RedumpSHA256:
|
||||||
case DatFormat.RedumpSHA384:
|
ParseRedumpSHA256(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
||||||
ParseRedumpSHA384(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
break;
|
||||||
break;
|
case DatFormat.RedumpSHA384:
|
||||||
case DatFormat.RedumpSHA512:
|
ParseRedumpSHA384(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
||||||
ParseRedumpSHA512(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
break;
|
||||||
break;
|
case DatFormat.RedumpSHA512:
|
||||||
case DatFormat.RomCenter:
|
ParseRedumpSHA512(filename, sysid, srcid, filter, trim, single, root, logger, clean);
|
||||||
ParseRC(filename, sysid, srcid, filter, trim, single, root, logger, clean, descAsName);
|
break;
|
||||||
break;
|
case DatFormat.RomCenter:
|
||||||
case DatFormat.TSV:
|
ParseRC(filename, sysid, srcid, filter, trim, single, root, logger, clean, descAsName);
|
||||||
ParseCSVTSV(filename, sysid, srcid, '\t', filter, trim, single, root, logger, keep, clean, descAsName);
|
break;
|
||||||
break;
|
case DatFormat.TSV:
|
||||||
default:
|
ParseCSVTSV(filename, sysid, srcid, '\t', filter, trim, single, root, logger, keep, clean, descAsName);
|
||||||
return;
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
logger.Error("Error with file '" + filename + "': " + ex.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we are using tags from the DAT, set the proper input for split type unless overridden
|
// If we are using tags from the DAT, set the proper input for split type unless overridden
|
||||||
@@ -565,36 +572,34 @@ namespace SabreTools.Helper.Dats
|
|||||||
|
|
||||||
// Regular attributes
|
// Regular attributes
|
||||||
case "name":
|
case "name":
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
item.Name = quoteless;
|
item.Name = quoteless;
|
||||||
break;
|
break;
|
||||||
case "size":
|
case "size":
|
||||||
if (item.Type == ItemType.Rom)
|
if (item.Type == ItemType.Rom)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
if (Int64.TryParse(quoteless, out long size))
|
||||||
long size = -1;
|
|
||||||
if (Int64.TryParse(quoteless, out size))
|
|
||||||
{
|
{
|
||||||
((Rom)item).Size = size;
|
((Rom)item).Size = size;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
((Rom)item).Size = -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "crc":
|
case "crc":
|
||||||
if (item.Type == ItemType.Rom)
|
if (item.Type == ItemType.Rom)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Rom)item).CRC = quoteless.ToLowerInvariant();
|
((Rom)item).CRC = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "md5":
|
case "md5":
|
||||||
if (item.Type == ItemType.Rom)
|
if (item.Type == ItemType.Rom)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Rom)item).MD5 = quoteless.ToLowerInvariant();
|
((Rom)item).MD5 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
else if (item.Type == ItemType.Disk)
|
else if (item.Type == ItemType.Disk)
|
||||||
@@ -607,63 +612,54 @@ namespace SabreTools.Helper.Dats
|
|||||||
case "sha1":
|
case "sha1":
|
||||||
if (item.Type == ItemType.Rom)
|
if (item.Type == ItemType.Rom)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Rom)item).SHA1 = quoteless.ToLowerInvariant();
|
((Rom)item).SHA1 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
else if (item.Type == ItemType.Disk)
|
else if (item.Type == ItemType.Disk)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Disk)item).SHA1 = quoteless.ToLowerInvariant();
|
((Disk)item).SHA1 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "sha256":
|
case "sha256":
|
||||||
if (item.Type == ItemType.Rom)
|
if (item.Type == ItemType.Rom)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Rom)item).SHA256 = quoteless.ToLowerInvariant();
|
((Rom)item).SHA256 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
else if (item.Type == ItemType.Disk)
|
else if (item.Type == ItemType.Disk)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Disk)item).SHA256 = quoteless.ToLowerInvariant();
|
((Disk)item).SHA256 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "sha384":
|
case "sha384":
|
||||||
if (item.Type == ItemType.Rom)
|
if (item.Type == ItemType.Rom)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Rom)item).SHA384 = quoteless.ToLowerInvariant();
|
((Rom)item).SHA384 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
else if (item.Type == ItemType.Disk)
|
else if (item.Type == ItemType.Disk)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Disk)item).SHA384 = quoteless.ToLowerInvariant();
|
((Disk)item).SHA384 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "sha512":
|
case "sha512":
|
||||||
if (item.Type == ItemType.Rom)
|
if (item.Type == ItemType.Rom)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Rom)item).SHA512 = quoteless.ToLowerInvariant();
|
((Rom)item).SHA512 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
else if (item.Type == ItemType.Disk)
|
else if (item.Type == ItemType.Disk)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
((Disk)item).SHA512 = quoteless.ToLowerInvariant();
|
((Disk)item).SHA512 = quoteless.ToLowerInvariant();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "status":
|
case "status":
|
||||||
case "flags":
|
case "flags":
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "");
|
|
||||||
if (quoteless.ToLowerInvariant() == "good")
|
if (quoteless.ToLowerInvariant() == "good")
|
||||||
{
|
{
|
||||||
if (item.Type == ItemType.Rom)
|
if (item.Type == ItemType.Rom)
|
||||||
@@ -712,8 +708,7 @@ namespace SabreTools.Helper.Dats
|
|||||||
case "date":
|
case "date":
|
||||||
if (item.Type == ItemType.Rom)
|
if (item.Type == ItemType.Rom)
|
||||||
{
|
{
|
||||||
i++;
|
quoteless = gc[++i].Replace("\"", "") + " " + gc[++i].Replace("\"", "");
|
||||||
quoteless = gc[i].Replace("\"", "") + " " + gc[i + 1].Replace("\"", "");
|
|
||||||
((Rom)item).Date = quoteless;
|
((Rom)item).Date = quoteless;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
|
|||||||
Reference in New Issue
Block a user