From b5307b79c348fda5a954d2f3ef37e9b0cbba8e7f Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 14 Sep 2016 11:05:40 -0700 Subject: [PATCH] [DATFromDir] Force file order parity --- SabreTools.Helper/Objects/DATFromDir.cs | 8 ++++++-- SabreTools.Helper/Objects/Import.cs | 2 +- SabreTools.Helper/Tools/DatTools.cs | 14 ++++++++++---- SabreTools.Helper/Tools/RomTools.cs | 2 +- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/SabreTools.Helper/Objects/DATFromDir.cs b/SabreTools.Helper/Objects/DATFromDir.cs index 89011b0f..50beb39a 100644 --- a/SabreTools.Helper/Objects/DATFromDir.cs +++ b/SabreTools.Helper/Objects/DATFromDir.cs @@ -155,7 +155,9 @@ namespace SabreTools // Then process each of the subfolders themselves string basePathBackup = _basePath; - foreach (string item in Directory.EnumerateDirectories(_basePath)) + List dirs = Directory.EnumerateDirectories(_basePath).ToList(); + dirs.Sort(Style.CompareNumeric); + foreach (string item in dirs) { if (_datdata.Type != "SuperDAT") { @@ -164,7 +166,9 @@ namespace SabreTools } bool items = false; - foreach (string subitem in Directory.EnumerateFiles(item, "*", SearchOption.AllDirectories)) + List files = Directory.EnumerateFiles(item, "*", SearchOption.AllDirectories).ToList(); + files.Sort(Style.CompareNumeric); + foreach (string subitem in files) { items = true; lastparent = ProcessPossibleArchive(subitem, sw, lastparent); diff --git a/SabreTools.Helper/Objects/Import.cs b/SabreTools.Helper/Objects/Import.cs index ccf30502..43642474 100644 --- a/SabreTools.Helper/Objects/Import.cs +++ b/SabreTools.Helper/Objects/Import.cs @@ -401,7 +401,7 @@ namespace SabreTools foreach (string key in sortable.Keys) { List roms = sortable[key]; - RomTools.Sort(roms, true); + RomTools.Sort(ref roms, true); long gameid = -1; using (SqliteConnection dbc = new SqliteConnection(_connectionString)) diff --git a/SabreTools.Helper/Tools/DatTools.cs b/SabreTools.Helper/Tools/DatTools.cs index 441ddca7..4ccd47cf 100644 --- a/SabreTools.Helper/Tools/DatTools.cs +++ b/SabreTools.Helper/Tools/DatTools.cs @@ -1779,9 +1779,12 @@ namespace SabreTools.Helper } // Now go through and sort all of the lists - foreach (string key in sortable.Keys) + List keys = sortable.Keys.ToList(); + foreach (string key in keys) { - RomTools.Sort(sortable[key], norename); + List sortedlist = sortable[key]; + RomTools.Sort(ref sortedlist, norename); + sortable[key] = sortedlist; } // Output the count if told to @@ -1856,9 +1859,12 @@ namespace SabreTools.Helper } // Now go through and sort all of the lists - foreach (string key in sortable.Keys) + List keys = sortable.Keys.ToList(); + foreach (string key in keys) { - RomTools.Sort(sortable[key], norename); + List sortedlist = sortable[key]; + RomTools.Sort(ref sortedlist, norename); + sortable[key] = sortedlist; } // Output the count if told to diff --git a/SabreTools.Helper/Tools/RomTools.cs b/SabreTools.Helper/Tools/RomTools.cs index a10e7c28..4d04338e 100644 --- a/SabreTools.Helper/Tools/RomTools.cs +++ b/SabreTools.Helper/Tools/RomTools.cs @@ -224,7 +224,7 @@ namespace SabreTools.Helper /// List of RomData objects representing the roms to be sorted /// True if files are not renamed, false otherwise /// True if it sorted correctly, false otherwise - public static bool Sort(List roms, bool norename) + public static bool Sort(ref List roms, bool norename) { try {