Support all framework versions

This commit is contained in:
Matt Nadareski
2024-12-28 20:15:32 -05:00
parent 91cebfce49
commit 4d9bb1c14e
16 changed files with 140 additions and 63 deletions

View File

@@ -436,7 +436,7 @@ namespace SabreTools.DatFiles
#region .csv #region .csv
// CSV // CSV
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.CSV) != 0) if ((datFormat & DatFormat.CSV) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.CSV)) if (datFormat.HasFlag(DatFormat.CSV))
@@ -451,7 +451,7 @@ namespace SabreTools.DatFiles
#region .dat #region .dat
// ClrMamePro // ClrMamePro
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.ClrMamePro) != 0) if ((datFormat & DatFormat.ClrMamePro) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.ClrMamePro)) if (datFormat.HasFlag(DatFormat.ClrMamePro))
@@ -462,7 +462,7 @@ namespace SabreTools.DatFiles
}; };
// RomCenter // RomCenter
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.RomCenter) != 0) if ((datFormat & DatFormat.RomCenter) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.RomCenter)) if (datFormat.HasFlag(DatFormat.RomCenter))
@@ -481,7 +481,7 @@ namespace SabreTools.DatFiles
} }
// DOSCenter // DOSCenter
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.DOSCenter) != 0) if ((datFormat & DatFormat.DOSCenter) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.DOSCenter)) if (datFormat.HasFlag(DatFormat.DOSCenter))
@@ -504,7 +504,7 @@ namespace SabreTools.DatFiles
#region .json #region .json
// JSON // JSON
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.SabreJSON) != 0) if ((datFormat & DatFormat.SabreJSON) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.SabreJSON)) if (datFormat.HasFlag(DatFormat.SabreJSON))
@@ -519,7 +519,7 @@ namespace SabreTools.DatFiles
#region .md5 #region .md5
// Redump MD5 // Redump MD5
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.RedumpMD5) != 0) if ((datFormat & DatFormat.RedumpMD5) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.RedumpMD5)) if (datFormat.HasFlag(DatFormat.RedumpMD5))
@@ -534,7 +534,7 @@ namespace SabreTools.DatFiles
#region .sfv #region .sfv
// Redump SFV // Redump SFV
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.RedumpSFV) != 0) if ((datFormat & DatFormat.RedumpSFV) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.RedumpSFV)) if (datFormat.HasFlag(DatFormat.RedumpSFV))
@@ -549,7 +549,7 @@ namespace SabreTools.DatFiles
#region .sha1 #region .sha1
// Redump SHA-1 // Redump SHA-1
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.RedumpSHA1) != 0) if ((datFormat & DatFormat.RedumpSHA1) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.RedumpSHA1)) if (datFormat.HasFlag(DatFormat.RedumpSHA1))
@@ -564,7 +564,7 @@ namespace SabreTools.DatFiles
#region .sha256 #region .sha256
// Redump SHA-256 // Redump SHA-256
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.RedumpSHA256) != 0) if ((datFormat & DatFormat.RedumpSHA256) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.RedumpSHA256)) if (datFormat.HasFlag(DatFormat.RedumpSHA256))
@@ -579,7 +579,7 @@ namespace SabreTools.DatFiles
#region .sha384 #region .sha384
// Redump SHA-384 // Redump SHA-384
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.RedumpSHA384) != 0) if ((datFormat & DatFormat.RedumpSHA384) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.RedumpSHA384)) if (datFormat.HasFlag(DatFormat.RedumpSHA384))
@@ -594,7 +594,7 @@ namespace SabreTools.DatFiles
#region .sha512 #region .sha512
// Redump SHA-512 // Redump SHA-512
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.RedumpSHA512) != 0) if ((datFormat & DatFormat.RedumpSHA512) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.RedumpSHA512)) if (datFormat.HasFlag(DatFormat.RedumpSHA512))
@@ -609,7 +609,7 @@ namespace SabreTools.DatFiles
#region .spamsum #region .spamsum
// Redump SpamSum // Redump SpamSum
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.RedumpSpamSum) != 0) if ((datFormat & DatFormat.RedumpSpamSum) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.RedumpSpamSum)) if (datFormat.HasFlag(DatFormat.RedumpSpamSum))
@@ -624,7 +624,7 @@ namespace SabreTools.DatFiles
#region .ssv #region .ssv
// SSV // SSV
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.SSV) != 0) if ((datFormat & DatFormat.SSV) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.SSV)) if (datFormat.HasFlag(DatFormat.SSV))
@@ -639,7 +639,7 @@ namespace SabreTools.DatFiles
#region .tsv #region .tsv
// TSV // TSV
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.TSV) != 0) if ((datFormat & DatFormat.TSV) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.TSV)) if (datFormat.HasFlag(DatFormat.TSV))
@@ -654,7 +654,7 @@ namespace SabreTools.DatFiles
#region .txt #region .txt
// AttractMode // AttractMode
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.AttractMode) != 0) if ((datFormat & DatFormat.AttractMode) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.AttractMode)) if (datFormat.HasFlag(DatFormat.AttractMode))
@@ -665,7 +665,7 @@ namespace SabreTools.DatFiles
} }
// MAME Listroms // MAME Listroms
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.Listrom) != 0) if ((datFormat & DatFormat.Listrom) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.Listrom)) if (datFormat.HasFlag(DatFormat.Listrom))
@@ -684,7 +684,7 @@ namespace SabreTools.DatFiles
} }
// Missfile // Missfile
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.MissFile) != 0) if ((datFormat & DatFormat.MissFile) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.MissFile)) if (datFormat.HasFlag(DatFormat.MissFile))
@@ -703,7 +703,7 @@ namespace SabreTools.DatFiles
} }
// Everdrive SMDB // Everdrive SMDB
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.EverdriveSMDB) != 0) if ((datFormat & DatFormat.EverdriveSMDB) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.EverdriveSMDB)) if (datFormat.HasFlag(DatFormat.EverdriveSMDB))
@@ -726,7 +726,7 @@ namespace SabreTools.DatFiles
#region .xml #region .xml
// Logiqx XML // Logiqx XML
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.Logiqx) != 0) if ((datFormat & DatFormat.Logiqx) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.Logiqx)) if (datFormat.HasFlag(DatFormat.Logiqx))
@@ -735,7 +735,7 @@ namespace SabreTools.DatFiles
outfileNames.Add(DatFormat.Logiqx, CreateOutFileNamesHelper(outDir, ".xml", overwrite)); outfileNames.Add(DatFormat.Logiqx, CreateOutFileNamesHelper(outDir, ".xml", overwrite));
usedExtensions.Add(".xml"); usedExtensions.Add(".xml");
} }
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.LogiqxDeprecated) != 0) if ((datFormat & DatFormat.LogiqxDeprecated) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.LogiqxDeprecated)) if (datFormat.HasFlag(DatFormat.LogiqxDeprecated))
@@ -746,7 +746,7 @@ namespace SabreTools.DatFiles
} }
// SabreDAT // SabreDAT
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.SabreXML) != 0) if ((datFormat & DatFormat.SabreXML) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.SabreXML)) if (datFormat.HasFlag(DatFormat.SabreXML))
@@ -765,7 +765,7 @@ namespace SabreTools.DatFiles
} }
// Software List // Software List
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.SoftwareList) != 0) if ((datFormat & DatFormat.SoftwareList) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.SoftwareList)) if (datFormat.HasFlag(DatFormat.SoftwareList))
@@ -784,7 +784,7 @@ namespace SabreTools.DatFiles
} }
// MAME Listxml // MAME Listxml
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.Listxml) != 0) if ((datFormat & DatFormat.Listxml) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.Listxml)) if (datFormat.HasFlag(DatFormat.Listxml))
@@ -803,7 +803,7 @@ namespace SabreTools.DatFiles
} }
// OfflineList // OfflineList
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.OfflineList) != 0) if ((datFormat & DatFormat.OfflineList) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.OfflineList)) if (datFormat.HasFlag(DatFormat.OfflineList))
@@ -822,7 +822,7 @@ namespace SabreTools.DatFiles
} }
// openMSX // openMSX
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.OpenMSX) != 0) if ((datFormat & DatFormat.OpenMSX) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.OpenMSX)) if (datFormat.HasFlag(DatFormat.OpenMSX))
@@ -841,7 +841,7 @@ namespace SabreTools.DatFiles
} }
// Archive.org // Archive.org
#if NETFRAMEWORK #if NET20 || NET35
if ((datFormat & DatFormat.ArchiveDotOrg) != 0) if ((datFormat & DatFormat.ArchiveDotOrg) != 0)
#else #else
if (datFormat.HasFlag(DatFormat.ArchiveDotOrg)) if (datFormat.HasFlag(DatFormat.ArchiveDotOrg))

View File

@@ -237,7 +237,7 @@ namespace SabreTools.DatItems
return output; return output;
// If the duplicate is external already or should be, set it // If the duplicate is external already or should be, set it
#if NETFRAMEWORK #if NET20 || NET35
if ((lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0 if ((lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0
|| lastItem?.GetFieldValue<Source?>(DatItem.SourceKey)?.Index != GetFieldValue<Source?>(DatItem.SourceKey)?.Index) || lastItem?.GetFieldValue<Source?>(DatItem.SourceKey)?.Index != GetFieldValue<Source?>(DatItem.SourceKey)?.Index)
#else #else
@@ -283,7 +283,7 @@ namespace SabreTools.DatItems
return output; return output;
// If the duplicate is external already or should be, set it // If the duplicate is external already or should be, set it
#if NETFRAMEWORK #if NET20 || NET35
if ((lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0 if ((lastItem.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0
|| lastSource?.Index != source?.Index) || lastSource?.Index != source?.Index)
#else #else
@@ -668,7 +668,7 @@ namespace SabreTools.DatItems
?? string.Empty; ?? string.Empty;
// If the current item exactly matches the last item, then we don't add it // If the current item exactly matches the last item, then we don't add it
#if NETFRAMEWORK #if NET20 || NET35
if ((datItem.GetDuplicateStatus(lastItem) & DupeType.All) != 0) if ((datItem.GetDuplicateStatus(lastItem) & DupeType.All) != 0)
#else #else
if (datItem.GetDuplicateStatus(lastItem).HasFlag(DupeType.All)) if (datItem.GetDuplicateStatus(lastItem).HasFlag(DupeType.All))
@@ -763,7 +763,7 @@ namespace SabreTools.DatItems
?? string.Empty; ?? string.Empty;
// If the current item exactly matches the last item, then we don't add it // If the current item exactly matches the last item, then we don't add it
#if NETFRAMEWORK #if NET20 || NET35
if ((datItem.Value.GetDuplicateStatus(lastItem) & DupeType.All) != 0) if ((datItem.Value.GetDuplicateStatus(lastItem) & DupeType.All) != 0)
#else #else
if (datItem.Value.GetDuplicateStatus(lastItem).HasFlag(DupeType.All)) if (datItem.Value.GetDuplicateStatus(lastItem).HasFlag(DupeType.All))

View File

@@ -590,7 +590,7 @@ namespace SabreTools.DatTools
// Loop through and add the items correctly // Loop through and add the items correctly
foreach (DatItem item in items) foreach (DatItem item in items)
{ {
#if NETFRAMEWORK #if NET20 || NET35
if ((item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0) if ((item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) != 0)
#else #else
if (item.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.External)) if (item.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.External))
@@ -686,7 +686,7 @@ namespace SabreTools.DatTools
long sourceIndex = itemSourceMappings[item.Key]; long sourceIndex = itemSourceMappings[item.Key];
// If the current item isn't an external duplicate // If the current item isn't an external duplicate
#if NETFRAMEWORK #if NET20 || NET35
if ((item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) == 0) if ((item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.External) == 0)
#else #else
if (!item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.External)) if (!item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.External))
@@ -818,7 +818,7 @@ namespace SabreTools.DatTools
if (item.GetFieldValue<Source?>(DatItem.SourceKey) == null) if (item.GetFieldValue<Source?>(DatItem.SourceKey) == null)
continue; continue;
#if NETFRAMEWORK #if NET20 || NET35
if ((item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.Internal) != 0 || item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00) if ((item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.Internal) != 0 || item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00)
#else #else
if (item.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.Internal) || item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00) if (item.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.Internal) || item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00)
@@ -944,7 +944,7 @@ namespace SabreTools.DatTools
continue; continue;
#endif #endif
#if NETFRAMEWORK #if NET20 || NET35
if ((item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.Internal) != 0 || item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00) if ((item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.Internal) != 0 || item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00)
#else #else
if (item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.Internal) || item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00) if (item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.Internal) || item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00)
@@ -1025,7 +1025,7 @@ namespace SabreTools.DatTools
// Loop through and add the items correctly // Loop through and add the items correctly
foreach (DatItem item in items) foreach (DatItem item in items)
{ {
#if NETFRAMEWORK #if NET20 || NET35
if ((item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.Internal) != 0 || item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00) if ((item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.Internal) != 0 || item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00)
#else #else
if (item.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.Internal) || item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00) if (item.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.Internal) || item.GetFieldValue<DupeType>(DatItem.DupeTypeKey) == 0x00)
@@ -1119,7 +1119,7 @@ namespace SabreTools.DatTools
long sourceIndex = itemSourceMappings[item.Key]; long sourceIndex = itemSourceMappings[item.Key];
// If the current item isn't a duplicate // If the current item isn't a duplicate
#if NETFRAMEWORK #if NET20 || NET35
if ((item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.Internal) == 0 && item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) != 0x00) if ((item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) & DupeType.Internal) == 0 && item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) != 0x00)
#else #else
if (!item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.Internal) && item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) != 0x00) if (!item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey).HasFlag(DupeType.Internal) && item.Value.GetFieldValue<DupeType>(DatItem.DupeTypeKey) != 0x00)

View File

@@ -156,7 +156,7 @@ namespace SabreTools.DatTools
archive.AvailableHashTypes = _hashes; archive.AvailableHashTypes = _hashes;
// Skip if we're treating archives as files and skipping files // Skip if we're treating archives as files and skipping files
#if NETFRAMEWORK #if NET20 || NET35
if ((asFiles & TreatAsFile.Archive) != 0 && _skipFileType == SkipFileType.File) if ((asFiles & TreatAsFile.Archive) != 0 && _skipFileType == SkipFileType.File)
#else #else
if (asFiles.HasFlag(TreatAsFile.Archive) && _skipFileType == SkipFileType.File) if (asFiles.HasFlag(TreatAsFile.Archive) && _skipFileType == SkipFileType.File)
@@ -172,7 +172,7 @@ namespace SabreTools.DatTools
} }
// Process as archive if we're not treating archives as files // Process as archive if we're not treating archives as files
#if NETFRAMEWORK #if NET20 || NET35
else if ((asFiles & TreatAsFile.Archive) == 0) else if ((asFiles & TreatAsFile.Archive) == 0)
#else #else
else if (!asFiles.HasFlag(TreatAsFile.Archive)) else if (!asFiles.HasFlag(TreatAsFile.Archive))

View File

@@ -329,13 +329,13 @@ namespace SabreTools.DatTools
DatItem? internalDatItem; DatItem? internalDatItem;
if (internalFileInfo == null) if (internalFileInfo == null)
internalDatItem = null; internalDatItem = null;
#if NETFRAMEWORK #if NET20 || NET35
else if (internalFileInfo is FileTypes.Aaru.AaruFormat && (asFiles & TreatAsFile.AaruFormat) == 0) else if (internalFileInfo is FileTypes.Aaru.AaruFormat && (asFiles & TreatAsFile.AaruFormat) == 0)
#else #else
else if (internalFileInfo is FileTypes.Aaru.AaruFormat && !asFiles.HasFlag(TreatAsFile.AaruFormat)) else if (internalFileInfo is FileTypes.Aaru.AaruFormat && !asFiles.HasFlag(TreatAsFile.AaruFormat))
#endif #endif
internalDatItem = new Media(internalFileInfo); internalDatItem = new Media(internalFileInfo);
#if NETFRAMEWORK #if NET20 || NET35
else if (internalFileInfo is FileTypes.CHD.CHDFile && (asFiles & TreatAsFile.CHD) == 0) else if (internalFileInfo is FileTypes.CHD.CHDFile && (asFiles & TreatAsFile.CHD) == 0)
#else #else
else if (internalFileInfo is FileTypes.CHD.CHDFile && !asFiles.HasFlag(TreatAsFile.CHD)) else if (internalFileInfo is FileTypes.CHD.CHDFile && !asFiles.HasFlag(TreatAsFile.CHD))

View File

@@ -222,35 +222,35 @@ namespace SabreTools.DatTools
// For each output format, get the appropriate stream writer // For each output format, get the appropriate stream writer
output.Add(StatReportFormat.None, CreateOutStatsNamesHelper(outDir, ".null", reportName, overwrite)); output.Add(StatReportFormat.None, CreateOutStatsNamesHelper(outDir, ".null", reportName, overwrite));
#if NETFRAMEWORK #if NET20 || NET35
if ((statDatFormat & StatReportFormat.Textfile) != 0) if ((statDatFormat & StatReportFormat.Textfile) != 0)
#else #else
if (statDatFormat.HasFlag(StatReportFormat.Textfile)) if (statDatFormat.HasFlag(StatReportFormat.Textfile))
#endif #endif
output.Add(StatReportFormat.Textfile, CreateOutStatsNamesHelper(outDir, ".txt", reportName, overwrite)); output.Add(StatReportFormat.Textfile, CreateOutStatsNamesHelper(outDir, ".txt", reportName, overwrite));
#if NETFRAMEWORK #if NET20 || NET35
if ((statDatFormat & StatReportFormat.CSV) != 0) if ((statDatFormat & StatReportFormat.CSV) != 0)
#else #else
if (statDatFormat.HasFlag(StatReportFormat.CSV)) if (statDatFormat.HasFlag(StatReportFormat.CSV))
#endif #endif
output.Add(StatReportFormat.CSV, CreateOutStatsNamesHelper(outDir, ".csv", reportName, overwrite)); output.Add(StatReportFormat.CSV, CreateOutStatsNamesHelper(outDir, ".csv", reportName, overwrite));
#if NETFRAMEWORK #if NET20 || NET35
if ((statDatFormat & StatReportFormat.HTML) != 0) if ((statDatFormat & StatReportFormat.HTML) != 0)
#else #else
if (statDatFormat.HasFlag(StatReportFormat.HTML)) if (statDatFormat.HasFlag(StatReportFormat.HTML))
#endif #endif
output.Add(StatReportFormat.HTML, CreateOutStatsNamesHelper(outDir, ".html", reportName, overwrite)); output.Add(StatReportFormat.HTML, CreateOutStatsNamesHelper(outDir, ".html", reportName, overwrite));
#if NETFRAMEWORK #if NET20 || NET35
if ((statDatFormat & StatReportFormat.SSV) != 0) if ((statDatFormat & StatReportFormat.SSV) != 0)
#else #else
if (statDatFormat.HasFlag(StatReportFormat.SSV)) if (statDatFormat.HasFlag(StatReportFormat.SSV))
#endif #endif
output.Add(StatReportFormat.SSV, CreateOutStatsNamesHelper(outDir, ".ssv", reportName, overwrite)); output.Add(StatReportFormat.SSV, CreateOutStatsNamesHelper(outDir, ".ssv", reportName, overwrite));
#if NETFRAMEWORK #if NET20 || NET35
if ((statDatFormat & StatReportFormat.TSV) != 0) if ((statDatFormat & StatReportFormat.TSV) != 0)
#else #else
if (statDatFormat.HasFlag(StatReportFormat.TSV)) if (statDatFormat.HasFlag(StatReportFormat.TSV))

View File

@@ -272,7 +272,7 @@ namespace SabreTools.FileTypes
// Get the info in the proper manner // Get the info in the proper manner
BaseFile? baseFile; BaseFile? baseFile;
#if NETFRAMEWORK #if NET20 || NET35
if (fileType == FileType.AaruFormat && (asFiles & TreatAsFile.AaruFormat) == 0) if (fileType == FileType.AaruFormat && (asFiles & TreatAsFile.AaruFormat) == 0)
baseFile = AaruFormat.Create(inputStream); baseFile = AaruFormat.Create(inputStream);
else if (fileType == FileType.CHD && (asFiles & TreatAsFile.CHD) == 0) else if (fileType == FileType.CHD && (asFiles & TreatAsFile.CHD) == 0)

View File

@@ -2,8 +2,7 @@
<PropertyGroup> <PropertyGroup>
<!-- Assembly Properties --> <!-- Assembly Properties -->
<TargetFrameworks> <TargetFrameworks>net20;net35;net40;net452;net462;net472;net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
net20;net35;net40;net452;net462;net472;net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
<CheckEolTargetFramework>false</CheckEolTargetFramework> <CheckEolTargetFramework>false</CheckEolTargetFramework>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion> <IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>

View File

@@ -91,7 +91,7 @@ Reset the internal state: reset();";
foreach (string line in lines) foreach (string line in lines)
{ {
// Skip empty lines // Skip empty lines
if (string.IsNullOrWhiteSpace(line)) if (string.IsNullOrEmpty(line))
continue; continue;
// Skip lines that start with REM or # // Skip lines that start with REM or #
@@ -473,7 +473,7 @@ Reset the internal state: reset();";
// If we had any unmapped formats, return an issue // If we had any unmapped formats, return an issue
if (unmappedFormats.Count > 0) if (unmappedFormats.Count > 0)
{ {
string message = $"The following inputs were invalid formats: {string.Join(", ", unmappedFormats)}"; string message = $"The following inputs were invalid formats: {string.Join(", ", [.. unmappedFormats])}";
return (false, message); return (false, message);
} }

View File

@@ -72,7 +72,11 @@ namespace SabreTools.Features
OutputDir = file.GetOutputPath(OutputDir, GetBoolean(features, InplaceValue)); OutputDir = file.GetOutputPath(OutputDir, GetBoolean(features, InplaceValue));
// Extension splitting // Extension splitting
#if NET20 || NET35
if ((splittingMode & SplittingMode.Extension) != 0)
#else
if (splittingMode.HasFlag(SplittingMode.Extension)) if (splittingMode.HasFlag(SplittingMode.Extension))
#endif
{ {
(DatFile? extADat, DatFile? extBDat) = DatTools.Splitter.SplitByExtension(internalDat, GetList(features, ExtAListValue), GetList(features, ExtBListValue)); (DatFile? extADat, DatFile? extBDat) = DatTools.Splitter.SplitByExtension(internalDat, GetList(features, ExtAListValue), GetList(features, ExtBListValue));
//(DatFile? extADat, DatFile? extBDat) = DatTools.Splitter.SplitByExtensionDB(internalDat, GetList(features, ExtAListValue), GetList(features, ExtBListValue)); //(DatFile? extADat, DatFile? extBDat) = DatTools.Splitter.SplitByExtensionDB(internalDat, GetList(features, ExtAListValue), GetList(features, ExtBListValue));
@@ -89,7 +93,11 @@ namespace SabreTools.Features
} }
// Hash splitting // Hash splitting
#if NET20 || NET35
if ((splittingMode & SplittingMode.Hash) != 0)
#else
if (splittingMode.HasFlag(SplittingMode.Hash)) if (splittingMode.HasFlag(SplittingMode.Hash))
#endif
{ {
Dictionary<string, DatFile> typeDats = DatTools.Splitter.SplitByHash(internalDat); Dictionary<string, DatFile> typeDats = DatTools.Splitter.SplitByHash(internalDat);
//Dictionary<string, DatFile> typeDats = DatTools.Splitter.SplitByHashDB(internalDat); //Dictionary<string, DatFile> typeDats = DatTools.Splitter.SplitByHashDB(internalDat);
@@ -116,7 +124,11 @@ namespace SabreTools.Features
} }
// Level splitting // Level splitting
#if NET20 || NET35
if ((splittingMode & SplittingMode.Level) != 0)
#else
if (splittingMode.HasFlag(SplittingMode.Level)) if (splittingMode.HasFlag(SplittingMode.Level))
#endif
{ {
logger.Warning("This feature is not implemented: level-split"); logger.Warning("This feature is not implemented: level-split");
DatTools.Splitter.SplitByLevel( DatTools.Splitter.SplitByLevel(
@@ -127,7 +139,11 @@ namespace SabreTools.Features
} }
// Size splitting // Size splitting
#if NET20 || NET35
if ((splittingMode & SplittingMode.Size) != 0)
#else
if (splittingMode.HasFlag(SplittingMode.Size)) if (splittingMode.HasFlag(SplittingMode.Size))
#endif
{ {
(DatFile lessThan, DatFile greaterThan) = DatTools.Splitter.SplitBySize(internalDat, GetInt64(features, RadixInt64Value)); (DatFile lessThan, DatFile greaterThan) = DatTools.Splitter.SplitBySize(internalDat, GetInt64(features, RadixInt64Value));
//(DatFile lessThan, DatFile greaterThan) = DatTools.Splitter.SplitBySizeDB(internalDat, GetInt64(features, RadixInt64Value)); //(DatFile lessThan, DatFile greaterThan) = DatTools.Splitter.SplitBySizeDB(internalDat, GetInt64(features, RadixInt64Value));
@@ -142,7 +158,11 @@ namespace SabreTools.Features
} }
// Total Size splitting // Total Size splitting
#if NET20 || NET35
if ((splittingMode & SplittingMode.TotalSize) != 0)
#else
if (splittingMode.HasFlag(SplittingMode.TotalSize)) if (splittingMode.HasFlag(SplittingMode.TotalSize))
#endif
{ {
logger.Warning("This feature is not implemented: level-split"); logger.Warning("This feature is not implemented: level-split");
List<DatFile> sizedDats = DatTools.Splitter.SplitByTotalSize(internalDat, GetInt64(features, ChunkSizeInt64Value)); List<DatFile> sizedDats = DatTools.Splitter.SplitByTotalSize(internalDat, GetInt64(features, ChunkSizeInt64Value));
@@ -169,7 +189,11 @@ namespace SabreTools.Features
} }
// Type splitting // Type splitting
#if NET20 || NET35
if ((splittingMode & SplittingMode.Type) != 0)
#else
if (splittingMode.HasFlag(SplittingMode.Type)) if (splittingMode.HasFlag(SplittingMode.Type))
#endif
{ {
Dictionary<ItemType, DatFile> typeDats = DatTools.Splitter.SplitByType(internalDat); Dictionary<ItemType, DatFile> typeDats = DatTools.Splitter.SplitByType(internalDat);

View File

@@ -50,7 +50,7 @@ The stats that are outputted are as follows:
string filename = Header!.GetStringFieldValue(DatFiles.DatHeader.FileNameKey)!; string filename = Header!.GetStringFieldValue(DatFiles.DatHeader.FileNameKey)!;
if (Path.GetFileName(filename) != filename) if (Path.GetFileName(filename) != filename)
{ {
if (string.IsNullOrWhiteSpace(OutputDir)) if (string.IsNullOrEmpty(OutputDir))
OutputDir = Path.GetDirectoryName(filename); OutputDir = Path.GetDirectoryName(filename);
else else
OutputDir = Path.Combine(OutputDir, Path.GetDirectoryName(filename)!); OutputDir = Path.Combine(OutputDir, Path.GetDirectoryName(filename)!);

View File

@@ -95,29 +95,33 @@ namespace SabreTools.Features
var updateMode = GetUpdateMode(features); var updateMode = GetUpdateMode(features);
// Normalize the extensions // Normalize the extensions
Header!.SetFieldValue<string?>(DatHeader.AddExtensionKey, (string.IsNullOrWhiteSpace(Header.GetStringFieldValue(DatHeader.AddExtensionKey)) || Header.GetStringFieldValue(DatHeader.AddExtensionKey)!.StartsWith(".") Header!.SetFieldValue<string?>(DatHeader.AddExtensionKey, (string.IsNullOrEmpty(Header.GetStringFieldValue(DatHeader.AddExtensionKey)) || Header.GetStringFieldValue(DatHeader.AddExtensionKey)!.StartsWith(".")
? Header.GetStringFieldValue(DatHeader.AddExtensionKey) ? Header.GetStringFieldValue(DatHeader.AddExtensionKey)
: $".{Header.GetStringFieldValue(DatHeader.AddExtensionKey)}")); : $".{Header.GetStringFieldValue(DatHeader.AddExtensionKey)}"));
Header.SetFieldValue<string?>(DatHeader.ReplaceExtensionKey, (string.IsNullOrWhiteSpace(Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)) || Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)!.StartsWith(".") Header.SetFieldValue<string?>(DatHeader.ReplaceExtensionKey, (string.IsNullOrEmpty(Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)) || Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)!.StartsWith(".")
? Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey) ? Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)
: $".{Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)}")); : $".{Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)}"));
// If we're in a non-replacement special update mode and the names aren't set, set defaults // If we're in a non-replacement special update mode and the names aren't set, set defaults
if (updateMode != 0 if (updateMode != 0
#if NET20 || NET35
&& !(((updateMode & UpdateMode.DiffAgainst) != 0) || ((updateMode & UpdateMode.BaseReplace) != 0)))
#else
&& !(updateMode.HasFlag(UpdateMode.DiffAgainst) || updateMode.HasFlag(UpdateMode.BaseReplace))) && !(updateMode.HasFlag(UpdateMode.DiffAgainst) || updateMode.HasFlag(UpdateMode.BaseReplace)))
#endif
{ {
// Get the values that will be used // Get the values that will be used
if (string.IsNullOrWhiteSpace(Header.GetStringFieldValue(Models.Metadata.Header.DateKey))) if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DateKey)))
Header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, DateTime.Now.ToString("yyyy-MM-dd")); Header.SetFieldValue<string?>(Models.Metadata.Header.DateKey, DateTime.Now.ToString("yyyy-MM-dd"));
if (string.IsNullOrWhiteSpace(Header.GetStringFieldValue(Models.Metadata.Header.NameKey))) if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.NameKey)))
{ {
Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, (updateMode != 0 ? "DiffDAT" : "MergeDAT") Header.SetFieldValue<string?>(Models.Metadata.Header.NameKey, (updateMode != 0 ? "DiffDAT" : "MergeDAT")
+ (Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == "SuperDAT" ? "-SuperDAT" : string.Empty) + (Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == "SuperDAT" ? "-SuperDAT" : string.Empty)
+ (Cleaner!.DedupeRoms != DedupeType.None ? "-deduped" : string.Empty)); + (Cleaner!.DedupeRoms != DedupeType.None ? "-deduped" : string.Empty));
} }
if (string.IsNullOrWhiteSpace(Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey))) if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
{ {
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, (updateMode != 0 ? "DiffDAT" : "MergeDAT") Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, (updateMode != 0 ? "DiffDAT" : "MergeDAT")
+ (Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == "SuperDAT" ? "-SuperDAT" : string.Empty) + (Header.GetStringFieldValue(Models.Metadata.Header.TypeKey) == "SuperDAT" ? "-SuperDAT" : string.Empty)
@@ -127,13 +131,13 @@ namespace SabreTools.Features
Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, $"{Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)} ({Header.GetStringFieldValue(Models.Metadata.Header.DateKey)})"); Header.SetFieldValue<string?>(Models.Metadata.Header.DescriptionKey, $"{Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)} ({Header.GetStringFieldValue(Models.Metadata.Header.DateKey)})");
} }
if (string.IsNullOrWhiteSpace(Header.GetStringFieldValue(Models.Metadata.Header.CategoryKey)) && updateMode != 0) if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.CategoryKey)) && updateMode != 0)
Header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, "DiffDAT"); Header.SetFieldValue<string?>(Models.Metadata.Header.CategoryKey, "DiffDAT");
if (string.IsNullOrWhiteSpace(Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey))) if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.AuthorKey)))
Header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, $"SabreTools {Globals.Version}"); Header.SetFieldValue<string?>(Models.Metadata.Header.AuthorKey, $"SabreTools {Globals.Version}");
if (string.IsNullOrWhiteSpace(Header.GetStringFieldValue(Models.Metadata.Header.CommentKey))) if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.CommentKey)))
Header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, $"Generated by SabreTools {Globals.Version}"); Header.SetFieldValue<string?>(Models.Metadata.Header.CommentKey, $"Generated by SabreTools {Globals.Version}");
} }
@@ -169,9 +173,15 @@ namespace SabreTools.Features
// Check the current format // Check the current format
DatFormat currentFormat = datFile.Header.GetFieldValue<DatFormat>(DatHeader.DatFormatKey); DatFormat currentFormat = datFile.Header.GetFieldValue<DatFormat>(DatHeader.DatFormatKey);
#if NET20 || NET35
bool isSeparatedFile = (currentFormat & DatFormat.CSV) != 0
|| (currentFormat & DatFormat.SSV) != 0
|| (currentFormat & DatFormat.TSV) != 0;
#else
bool isSeparatedFile = currentFormat.HasFlag(DatFormat.CSV) bool isSeparatedFile = currentFormat.HasFlag(DatFormat.CSV)
|| currentFormat.HasFlag(DatFormat.SSV) || currentFormat.HasFlag(DatFormat.SSV)
|| currentFormat.HasFlag(DatFormat.TSV); || currentFormat.HasFlag(DatFormat.TSV);
#endif
Parser.ParseInto(datFile, inputPath, keep: true, keepext: isSeparatedFile); Parser.ParseInto(datFile, inputPath, keep: true, keepext: isSeparatedFile);
@@ -198,12 +208,20 @@ namespace SabreTools.Features
} }
// Reverse inputs if we're in a required mode // Reverse inputs if we're in a required mode
#if NET20 || NET35
if ((updateMode & UpdateMode.DiffReverseCascade) != 0)
#else
if (updateMode.HasFlag(UpdateMode.DiffReverseCascade)) if (updateMode.HasFlag(UpdateMode.DiffReverseCascade))
#endif
{ {
updateMode |= UpdateMode.DiffCascade; updateMode |= UpdateMode.DiffCascade;
inputPaths.Reverse(); inputPaths.Reverse();
} }
#if NET20 || NET35
if ((updateMode & UpdateMode.ReverseBaseReplace) != 0)
#else
if (updateMode.HasFlag(UpdateMode.ReverseBaseReplace)) if (updateMode.HasFlag(UpdateMode.ReverseBaseReplace))
#endif
{ {
updateMode |= UpdateMode.BaseReplace; updateMode |= UpdateMode.BaseReplace;
basePaths.Reverse(); basePaths.Reverse();
@@ -214,7 +232,11 @@ namespace SabreTools.Features
// Populate using the correct set // Populate using the correct set
List<DatHeader> datHeaders; List<DatHeader> datHeaders;
#if NET20 || NET35
if ((updateMode & UpdateMode.DiffAgainst) != 0 || (updateMode & UpdateMode.BaseReplace) != 0)
#else
if (updateMode.HasFlag(UpdateMode.DiffAgainst) || updateMode.HasFlag(UpdateMode.BaseReplace)) if (updateMode.HasFlag(UpdateMode.DiffAgainst) || updateMode.HasFlag(UpdateMode.BaseReplace))
#endif
datHeaders = DatFileTool.PopulateUserData(userInputDat, basePaths); datHeaders = DatFileTool.PopulateUserData(userInputDat, basePaths);
else else
datHeaders = DatFileTool.PopulateUserData(userInputDat, inputPaths); datHeaders = DatFileTool.PopulateUserData(userInputDat, inputPaths);
@@ -228,7 +250,11 @@ namespace SabreTools.Features
Remover!.ApplyRemovals(userInputDat); Remover!.ApplyRemovals(userInputDat);
// Output only DatItems that are duplicated across inputs // Output only DatItems that are duplicated across inputs
#if NET20 || NET35
if ((updateMode & UpdateMode.DiffDupesOnly) != 0)
#else
if (updateMode.HasFlag(UpdateMode.DiffDupesOnly)) if (updateMode.HasFlag(UpdateMode.DiffDupesOnly))
#endif
{ {
DatFile dupeData = DatFileTool.DiffDuplicates(userInputDat, inputPaths); DatFile dupeData = DatFileTool.DiffDuplicates(userInputDat, inputPaths);
//DatFile dupeData = DatFileTool.DiffDuplicatesDB(userInputDat, inputPaths); //DatFile dupeData = DatFileTool.DiffDuplicatesDB(userInputDat, inputPaths);
@@ -239,7 +265,11 @@ namespace SabreTools.Features
} }
// Output only DatItems that are not duplicated across inputs // Output only DatItems that are not duplicated across inputs
#if NET20 || NET35
if ((updateMode & UpdateMode.DiffNoDupesOnly) != 0)
#else
if (updateMode.HasFlag(UpdateMode.DiffNoDupesOnly)) if (updateMode.HasFlag(UpdateMode.DiffNoDupesOnly))
#endif
{ {
DatFile outerDiffData = DatFileTool.DiffNoDuplicates(userInputDat, inputPaths); DatFile outerDiffData = DatFileTool.DiffNoDuplicates(userInputDat, inputPaths);
//DatFile outerDiffData = DatFileTool.DiffNoDuplicatesDB(userInputDat, inputPaths); //DatFile outerDiffData = DatFileTool.DiffNoDuplicatesDB(userInputDat, inputPaths);
@@ -250,7 +280,11 @@ namespace SabreTools.Features
} }
// Output only DatItems that are unique to each input // Output only DatItems that are unique to each input
#if NET20 || NET35
if ((updateMode & UpdateMode.DiffIndividualsOnly) != 0)
#else
if (updateMode.HasFlag(UpdateMode.DiffIndividualsOnly)) if (updateMode.HasFlag(UpdateMode.DiffIndividualsOnly))
#endif
{ {
// Get all of the output DatFiles // Get all of the output DatFiles
List<DatFile> datFiles = DatFileTool.DiffIndividuals(userInputDat, inputPaths); List<DatFile> datFiles = DatFileTool.DiffIndividuals(userInputDat, inputPaths);
@@ -281,7 +315,11 @@ namespace SabreTools.Features
} }
// Output cascaded diffs // Output cascaded diffs
#if NET20 || NET35
if ((updateMode & UpdateMode.DiffCascade) != 0)
#else
if (updateMode.HasFlag(UpdateMode.DiffCascade)) if (updateMode.HasFlag(UpdateMode.DiffCascade))
#endif
{ {
// Preprocess the DatHeaders // Preprocess the DatHeaders
#if NET452_OR_GREATER || NETCOREAPP #if NET452_OR_GREATER || NETCOREAPP
@@ -337,7 +375,11 @@ namespace SabreTools.Features
} }
// Output differences against a base DAT // Output differences against a base DAT
#if NET20 || NET35
if ((updateMode & UpdateMode.DiffAgainst) != 0)
#else
if (updateMode.HasFlag(UpdateMode.DiffAgainst)) if (updateMode.HasFlag(UpdateMode.DiffAgainst))
#endif
{ {
// Loop through each input and diff against the base // Loop through each input and diff against the base
#if NET452_OR_GREATER || NETCOREAPP #if NET452_OR_GREATER || NETCOREAPP
@@ -374,7 +416,11 @@ namespace SabreTools.Features
} }
// Output DATs after replacing fields from a base DatFile // Output DATs after replacing fields from a base DatFile
#if NET20 || NET35
if ((updateMode & UpdateMode.BaseReplace) != 0)
#else
if (updateMode.HasFlag(UpdateMode.BaseReplace)) if (updateMode.HasFlag(UpdateMode.BaseReplace))
#endif
{ {
// Loop through each input and apply the base DatFile // Loop through each input and apply the base DatFile
#if NET452_OR_GREATER || NETCOREAPP #if NET452_OR_GREATER || NETCOREAPP
@@ -418,7 +464,11 @@ namespace SabreTools.Features
// Merge all input files and write // Merge all input files and write
// This has to be last due to the SuperDAT handling // This has to be last due to the SuperDAT handling
#if NET20 || NET35
if ((updateMode & UpdateMode.Merge) != 0)
#else
if (updateMode.HasFlag(UpdateMode.Merge)) if (updateMode.HasFlag(UpdateMode.Merge))
#endif
{ {
// If we're in SuperDAT mode, prefix all games with their respective DATs // If we're in SuperDAT mode, prefix all games with their respective DATs
if (string.Equals(userInputDat.Header.GetStringFieldValue(Models.Metadata.Header.TypeKey), "SuperDAT", StringComparison.OrdinalIgnoreCase)) if (string.Equals(userInputDat.Header.GetStringFieldValue(Models.Metadata.Header.TypeKey), "SuperDAT", StringComparison.OrdinalIgnoreCase))

View File

@@ -33,14 +33,18 @@ namespace SabreTools
public static void Main(string[] args) public static void Main(string[] args)
{ {
// Perform initial setup and verification // Perform initial setup and verification
#if NET20 || NET35
LoggerImpl.SetFilename(Path.Combine(Path.Combine(PathTool.GetRuntimeDirectory(), "logs"), "sabretools.log"), true);
#else
LoggerImpl.SetFilename(Path.Combine(PathTool.GetRuntimeDirectory(), "logs", "sabretools.log"), true); LoggerImpl.SetFilename(Path.Combine(PathTool.GetRuntimeDirectory(), "logs", "sabretools.log"), true);
#endif
LoggerImpl.AppendPrefix = true; LoggerImpl.AppendPrefix = true;
LoggerImpl.LowestLogLevel = LogLevel.VERBOSE; LoggerImpl.LowestLogLevel = LogLevel.VERBOSE;
LoggerImpl.ThrowOnError = false; LoggerImpl.ThrowOnError = false;
LoggerImpl.Start(); LoggerImpl.Start();
// Reformat the arguments, if needed // Reformat the arguments, if needed
if (Array.Exists(args, a => a.Contains('"'))) if (Array.Exists(args, a => a.Contains("\"")))
args = ReformatArguments(args); args = ReformatArguments(args);
// Create a new Help object for this program // Create a new Help object for this program

View File

@@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<!-- Assembly Properties --> <!-- Assembly Properties -->
<TargetFrameworks>net40;net452;net462;net472;net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks> <TargetFrameworks>net20;net35;net40;net452;net462;net472;net48;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0</TargetFrameworks>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<CheckEolTargetFramework>false</CheckEolTargetFramework> <CheckEolTargetFramework>false</CheckEolTargetFramework>
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract> <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>

View File

@@ -54,7 +54,7 @@ RUNTIMES=("win-x86" "win-x64" "win-arm64" "linux-x64" "linux-arm64" "osx-x64" "o
# Use expanded lists, if requested # Use expanded lists, if requested
if [ $USE_ALL = true ]; then if [ $USE_ALL = true ]; then
FRAMEWORKS=("net40" "net452" "net462" "net472" "net48" "netcoreapp3.1" "net5.0" "net6.0" "net7.0" "net8.0" "net9.0") # TODO: Support all frameworks FRAMEWORKS=("net20" "net35" "net40" "net452" "net462" "net472" "net48" "netcoreapp3.1" "net5.0" "net6.0" "net7.0" "net8.0" "net9.0")
fi fi
# Create the filter arrays # Create the filter arrays

View File

@@ -45,7 +45,7 @@ $RUNTIMES = @('win-x86', 'win-x64', 'win-arm64', 'linux-x64', 'linux-arm64', 'os
# Use expanded lists, if requested # Use expanded lists, if requested
if ($USE_ALL.IsPresent) { if ($USE_ALL.IsPresent) {
$FRAMEWORKS = @('net40', 'net452', 'net462', 'net472', 'net48', 'netcoreapp3.1', 'net5.0', 'net6.0', 'net7.0', 'net8.0', 'net9.0') # TODO: Support all frameworks $FRAMEWORKS = @('net20', 'net35', 'net40', 'net452', 'net462', 'net472', 'net48', 'netcoreapp3.1', 'net5.0', 'net6.0', 'net7.0', 'net8.0', 'net9.0')
} }
# Create the filter arrays # Create the filter arrays