diff --git a/SabreTools.Helper/Data/Build.cs b/SabreTools.Helper/Data/Build.cs
index fca9b5f9..bd9e0e00 100644
--- a/SabreTools.Helper/Data/Build.cs
+++ b/SabreTools.Helper/Data/Build.cs
@@ -276,6 +276,7 @@ namespace SabreTools.Helper
helptext.Add(" -gz={2} Set scanning level for GZip archives");
helptext.Add(" -rar={2} Set scanning level for RAR archives");
helptext.Add(" -zip={1} Set scanning level for ZIP archives");
+ helptext.Add(" -ud, --update-dat Output updated DAT");
helptext.Add("");
helptext.Add("Archive scanning levels:");
helptext.Add(" 0 Hash archive and contents");
diff --git a/SimpleSort/SimpleSort.cs b/SimpleSort/SimpleSort.cs
index 6194c268..b17c8492 100644
--- a/SimpleSort/SimpleSort.cs
+++ b/SimpleSort/SimpleSort.cs
@@ -18,6 +18,7 @@ namespace SabreTools
private bool _verify;
private bool _tgz;
private bool _romba;
+ private bool _updateDat;
private ArchiveScanLevel _7z;
private ArchiveScanLevel _gz;
private ArchiveScanLevel _rar;
@@ -45,10 +46,11 @@ namespace SabreTools
/// Integer representing the archive handling level for GZip
/// Integer representing the archive handling level for RAR
/// Integer representing the archive handling level for Zip
+ /// True if the updated DAT should be output, false otherwise
/// Logger object for file and console output
public SimpleSort(Dat datdata, List inputs, string outdir, string tempdir,
bool quickScan, bool toFolder, bool verify, bool tgz, bool romba, int sevenzip,
- int gz, int rar, int zip, Logger logger)
+ int gz, int rar, int zip, bool updateDat, Logger logger)
{
_datdata = datdata;
_inputs = inputs;
@@ -63,6 +65,7 @@ namespace SabreTools
_gz = (ArchiveScanLevel)(gz < 0 || gz > 2 ? 0 : gz);
_rar = (ArchiveScanLevel)(rar < 0 || rar > 2 ? 0 : rar);
_zip = (ArchiveScanLevel)(zip < 0 || zip > 2 ? 0 : zip);
+ _updateDat = updateDat;
_logger = logger;
_cursorTop = Console.CursorTop;
@@ -114,6 +117,7 @@ namespace SabreTools
simpleSort = true,
tgz = false,
toFolder = false,
+ updateDat = false,
verify = false;
int sevenzip = 0,
gz = 2,
@@ -150,6 +154,10 @@ namespace SabreTools
case "--tgz":
tgz = true;
break;
+ case "-ud":
+ case "--updated-dat":
+ updateDat = true;
+ break;
case "-v":
case "--verify":
verify = true;
@@ -246,7 +254,7 @@ namespace SabreTools
{
if (datfiles.Count > 0)
{
- InitSimpleSort(datfiles, inputs, outdir, tempdir, quickScan, toFolder, verify, tgz, romba, sevenzip, gz, rar, zip, logger);
+ InitSimpleSort(datfiles, inputs, outdir, tempdir, quickScan, toFolder, verify, tgz, romba, sevenzip, gz, rar, zip, updateDat, logger);
}
else
{
@@ -283,9 +291,10 @@ namespace SabreTools
/// Integer representing the archive handling level for GZip
/// Integer representing the archive handling level for RAR
/// Integer representing the archive handling level for Zip
+ /// True if the updated DAT should be output, false otherwise
/// Logger object for file and console output
- private static void InitSimpleSort(List datfiles, List inputs, string outdir, string tempdir,
- bool quickScan, bool toFolder, bool verify, bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, Logger logger)
+ private static void InitSimpleSort(List datfiles, List inputs, string outdir, string tempdir, bool quickScan,
+ bool toFolder, bool verify, bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, bool updateDat, Logger logger)
{
// Add all of the input DATs into one huge internal DAT
Dat datdata = new Dat();
@@ -294,7 +303,7 @@ namespace SabreTools
datdata = DatTools.Parse(datfile, 99, 99, datdata, logger);
}
- SimpleSort ss = new SimpleSort(datdata, inputs, outdir, tempdir, quickScan, toFolder, verify, tgz, romba, sevenzip, gz, rar, zip, logger);
+ SimpleSort ss = new SimpleSort(datdata, inputs, outdir, tempdir, quickScan, toFolder, verify, tgz, romba, sevenzip, gz, rar, zip, updateDat, logger);
ss.StartProcessing();
}
@@ -462,7 +471,14 @@ namespace SabreTools
_logger.User("Stats of the matched ROMs:");
Stats.OutputStats(_matched, _logger, true);
- // Diff the matched with the input DAT(s) and output if flag is set
+ // Now output the fixdat based on the original input if asked
+ if (_updateDat)
+ {
+ _datdata.FileName = "fixDat_" + _datdata.FileName;
+ _datdata.Name = "fixDat_" + _datdata.Name;
+ _datdata.Description = "fixDat_" + _datdata.Description;
+ Output.WriteDatfile(_datdata, "", _logger);
+ }
return success;
}