diff --git a/.gitignore b/.gitignore index 307b880a..82a1a791 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,11 @@ /SabreTools/Properties/launchSettings.json /SabreTools/SabreTools.csproj.user /SabreTools.Data/bin/ -/SabreTools.Data/obj +/SabreTools.Data/obj/ /SabreTools.Help/bin/ /SabreTools.Help/obj/ +/SabreTools.IO/bin/ +/SabreTools.IO/obj/ /SabreTools.Library/bin/ /SabreTools.Library/obj/ /SabreTools.Logging/bin/ diff --git a/RombaSharp/Features/Build.cs b/RombaSharp/Features/Build.cs index c1d95b14..0c988da8 100644 --- a/RombaSharp/Features/Build.cs +++ b/RombaSharp/Features/Build.cs @@ -3,9 +3,9 @@ using System.IO; using System.Linq; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; using SabreTools.Library.FileTypes; -using SabreTools.Library.IO; namespace RombaSharp.Features { diff --git a/RombaSharp/Features/Diffdat.cs b/RombaSharp/Features/Diffdat.cs index 6242ccbe..d61a4f0b 100644 --- a/RombaSharp/Features/Diffdat.cs +++ b/RombaSharp/Features/Diffdat.cs @@ -2,8 +2,8 @@ using System.IO; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; -using SabreTools.Library.IO; namespace RombaSharp.Features { diff --git a/RombaSharp/Features/Dir2Dat.cs b/RombaSharp/Features/Dir2Dat.cs index eb6313d3..34989b49 100644 --- a/RombaSharp/Features/Dir2Dat.cs +++ b/RombaSharp/Features/Dir2Dat.cs @@ -2,9 +2,9 @@ using System.IO; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; using SabreTools.Library.Filtering; -using SabreTools.Library.IO; using SabreTools.Library.Tools; namespace RombaSharp.Features diff --git a/RombaSharp/Features/EDiffdat.cs b/RombaSharp/Features/EDiffdat.cs index fa432657..5193db52 100644 --- a/RombaSharp/Features/EDiffdat.cs +++ b/RombaSharp/Features/EDiffdat.cs @@ -2,8 +2,8 @@ using System.IO; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; -using SabreTools.Library.IO; namespace RombaSharp.Features { diff --git a/RombaSharp/Features/Import.cs b/RombaSharp/Features/Import.cs index a94117ca..bb6184c4 100644 --- a/RombaSharp/Features/Import.cs +++ b/RombaSharp/Features/Import.cs @@ -3,6 +3,7 @@ using System.IO; using System.Linq; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.IO; using Microsoft.Data.Sqlite; diff --git a/RombaSharp/Features/Merge.cs b/RombaSharp/Features/Merge.cs index a42198f1..cea5769c 100644 --- a/RombaSharp/Features/Merge.cs +++ b/RombaSharp/Features/Merge.cs @@ -3,7 +3,7 @@ using System.IO; using System.Linq; using SabreTools.Help; -using SabreTools.Library.IO; +using SabreTools.IO; namespace RombaSharp.Features { diff --git a/RombaSharp/Features/Miss.cs b/RombaSharp/Features/Miss.cs index c70d7b4c..da04df37 100644 --- a/RombaSharp/Features/Miss.cs +++ b/RombaSharp/Features/Miss.cs @@ -3,8 +3,8 @@ using System.IO; using SabreTools.Data; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; -using SabreTools.Library.IO; namespace RombaSharp.Features { diff --git a/SabreTools.Help/SabreTools.Help.csproj b/SabreTools.Help/SabreTools.Help.csproj index 820322b3..afe2c72d 100644 --- a/SabreTools.Help/SabreTools.Help.csproj +++ b/SabreTools.Help/SabreTools.Help.csproj @@ -1,4 +1,4 @@ - + net48;netcoreapp3.1;net5.0 diff --git a/SabreTools.Library/IO/BinaryReaderExtensions.cs b/SabreTools.IO/BinaryReaderExtensions.cs similarity index 99% rename from SabreTools.Library/IO/BinaryReaderExtensions.cs rename to SabreTools.IO/BinaryReaderExtensions.cs index 5fa24203..98afe1f5 100644 --- a/SabreTools.Library/IO/BinaryReaderExtensions.cs +++ b/SabreTools.IO/BinaryReaderExtensions.cs @@ -1,7 +1,7 @@ using System; using System.IO; -namespace SabreTools.Library.IO +namespace SabreTools.IO { /// /// Big endian reading overloads for BinaryReader diff --git a/SabreTools.Library/IO/ClrMameProReader.cs b/SabreTools.IO/ClrMameProReader.cs similarity index 99% rename from SabreTools.Library/IO/ClrMameProReader.cs rename to SabreTools.IO/ClrMameProReader.cs index fedae52f..754773dd 100644 --- a/SabreTools.Library/IO/ClrMameProReader.cs +++ b/SabreTools.IO/ClrMameProReader.cs @@ -7,7 +7,7 @@ using System.Text.RegularExpressions; using SabreTools.Data; -namespace SabreTools.Library.IO +namespace SabreTools.IO { public class ClrMameProReader : IDisposable { diff --git a/SabreTools.Library/IO/ClrMameProWriter.cs b/SabreTools.IO/ClrMameProWriter.cs similarity index 99% rename from SabreTools.Library/IO/ClrMameProWriter.cs rename to SabreTools.IO/ClrMameProWriter.cs index 1e0424f8..57752f4b 100644 --- a/SabreTools.Library/IO/ClrMameProWriter.cs +++ b/SabreTools.IO/ClrMameProWriter.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; -namespace SabreTools.Library.IO +namespace SabreTools.IO { /// /// ClrMamePro writer patterned heavily off of XmlTextWriter diff --git a/SabreTools.Library/IO/DirectoryExtensions.cs b/SabreTools.IO/DirectoryExtensions.cs similarity index 67% rename from SabreTools.Library/IO/DirectoryExtensions.cs rename to SabreTools.IO/DirectoryExtensions.cs index 5786ec4c..366b2aed 100644 --- a/SabreTools.Library/IO/DirectoryExtensions.cs +++ b/SabreTools.IO/DirectoryExtensions.cs @@ -4,9 +4,8 @@ using System.IO; using System.Linq; using SabreTools.Logging; -using NaturalSort; -namespace SabreTools.Library.IO +namespace SabreTools.IO { /// /// Extensions to Directory functionality @@ -21,7 +20,7 @@ namespace SabreTools.Library.IO { foreach (string file in Directory.EnumerateFiles(dir, "*", SearchOption.TopDirectoryOnly)) { - FileExtensions.TryDelete(file); + FileTryDelete(file); } foreach (string subdir in Directory.EnumerateDirectories(dir, "*", SearchOption.TopDirectoryOnly)) @@ -337,5 +336,185 @@ namespace SabreTools.Library.IO return false; } } + + // TODO: Remove this entire section once External and the rest of IO is in its own library (or pulled in otherwise) + #region TEMPORARY - REMOVEME + + /// + /// Try to safely delete a file, optionally throwing the error + /// + /// Name of the file to delete + /// True if the error that is thrown should be thrown back to the caller, false otherwise + /// True if the file didn't exist or could be deleted, false otherwise + private static bool FileTryDelete(string file, bool throwOnError = false) + { + // Check if the file exists first + if (!File.Exists(file)) + return true; + + // Now wrap deleting the file + try + { + File.Delete(file); + return true; + } + catch (Exception ex) + { + if (throwOnError) + throw ex; + else + return false; + } + } + + private class NaturalComparer : Comparer, IDisposable + { + private Dictionary table; + + public NaturalComparer() + { + table = new Dictionary(); + } + + public void Dispose() + { + table.Clear(); + table = null; + } + + public override int Compare(string x, string y) + { + if (x.ToLowerInvariant() == y.ToLowerInvariant()) + { + return x.CompareTo(y); + } + if (!table.TryGetValue(x, out string[] x1)) + { + //x1 = Regex.Split(x.Replace(" ", string.Empty), "([0-9]+)"); + x1 = System.Text.RegularExpressions.Regex.Split(x.ToLowerInvariant(), "([0-9]+)").Where(s => !string.IsNullOrWhiteSpace(s)).ToArray(); + table.Add(x, x1); + } + if (!table.TryGetValue(y, out string[] y1)) + { + //y1 = Regex.Split(y.Replace(" ", string.Empty), "([0-9]+)"); + y1 = System.Text.RegularExpressions.Regex.Split(y.ToLowerInvariant(), "([0-9]+)").Where(s => !string.IsNullOrWhiteSpace(s)).ToArray(); + table.Add(y, y1); + } + + for (int i = 0; i < x1.Length && i < y1.Length; i++) + { + if (x1[i] != y1[i]) + { + return PartCompare(x1[i], y1[i]); + } + } + if (y1.Length > x1.Length) + { + return 1; + } + else if (x1.Length > y1.Length) + { + return -1; + } + else + { + return x.CompareTo(y); + } + } + + private static int PartCompare(string left, string right) + { + if (!long.TryParse(left, out long x)) + { + return CompareNumeric(left, right); + } + + if (!long.TryParse(right, out long y)) + { + return CompareNumeric(left, right); + } + + // If we have an equal part, then make sure that "longer" ones are taken into account + if (x.CompareTo(y) == 0) + { + return left.Length - right.Length; + } + + return x.CompareTo(y); + } + + private static int CompareNumeric(string s1, string s2) + { + // Save the orginal strings, for later comparison + string s1orig = s1; + string s2orig = s2; + + // We want to normalize the strings, so we set both to lower case + s1 = s1.ToLowerInvariant(); + s2 = s2.ToLowerInvariant(); + + // If the strings are the same exactly, return + if (s1 == s2) + return s1orig.CompareTo(s2orig); + + // If one is null, then say that's less than + if (s1 == null) + return -1; + if (s2 == null) + return 1; + + // Now split into path parts after converting AltDirSeparator to DirSeparator + s1 = s1.Replace(System.IO.Path.AltDirectorySeparatorChar, System.IO.Path.DirectorySeparatorChar); + s2 = s2.Replace(System.IO.Path.AltDirectorySeparatorChar, System.IO.Path.DirectorySeparatorChar); + string[] s1parts = s1.Split(System.IO.Path.DirectorySeparatorChar); + string[] s2parts = s2.Split(System.IO.Path.DirectorySeparatorChar); + + // Then compare each part in turn + for (int j = 0; j < s1parts.Length && j < s2parts.Length; j++) + { + int compared = CompareNumericPart(s1parts[j], s2parts[j]); + if (compared != 0) + return compared; + } + + // If we got out here, then it looped through at least one of the strings + if (s1parts.Length > s2parts.Length) + return 1; + if (s1parts.Length < s2parts.Length) + return -1; + + return s1orig.CompareTo(s2orig); + } + + private static int CompareNumericPart(string s1, string s2) + { + // Otherwise, loop through until we have an answer + for (int i = 0; i < s1.Length && i < s2.Length; i++) + { + int s1c = s1[i]; + int s2c = s2[i]; + + // If the characters are the same, continue + if (s1c == s2c) + continue; + + // If they're different, check which one was larger + if (s1c > s2c) + return 1; + if (s1c < s2c) + return -1; + } + + // If we got out here, then it looped through at least one of the strings + if (s1.Length > s2.Length) + return 1; + if (s1.Length < s2.Length) + return -1; + + return 0; + } + } + + #endregion } } diff --git a/SabreTools.Library/IO/Enums.cs b/SabreTools.IO/Enums.cs similarity index 92% rename from SabreTools.Library/IO/Enums.cs rename to SabreTools.IO/Enums.cs index 14492285..0874c636 100644 --- a/SabreTools.Library/IO/Enums.cs +++ b/SabreTools.IO/Enums.cs @@ -1,4 +1,4 @@ -namespace SabreTools.Library.IO +namespace SabreTools.IO { /// /// Different types of CMP rows being parsed diff --git a/SabreTools.Library/IO/IniReader.cs b/SabreTools.IO/IniReader.cs similarity index 99% rename from SabreTools.Library/IO/IniReader.cs rename to SabreTools.IO/IniReader.cs index fa092689..b30a5a0b 100644 --- a/SabreTools.Library/IO/IniReader.cs +++ b/SabreTools.IO/IniReader.cs @@ -4,7 +4,7 @@ using System.IO; using System.Linq; using System.Text; -namespace SabreTools.Library.IO +namespace SabreTools.IO { public class IniReader : IDisposable { diff --git a/SabreTools.Library/IO/IniWriter.cs b/SabreTools.IO/IniWriter.cs similarity index 98% rename from SabreTools.Library/IO/IniWriter.cs rename to SabreTools.IO/IniWriter.cs index 78749e52..dfc92e1d 100644 --- a/SabreTools.Library/IO/IniWriter.cs +++ b/SabreTools.IO/IniWriter.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; -namespace SabreTools.Library.IO +namespace SabreTools.IO { public class IniWriter : IDisposable { diff --git a/SabreTools.Library/IO/ParentablePath.cs b/SabreTools.IO/ParentablePath.cs similarity index 99% rename from SabreTools.Library/IO/ParentablePath.cs rename to SabreTools.IO/ParentablePath.cs index 9ecc91b8..5d6e0720 100644 --- a/SabreTools.Library/IO/ParentablePath.cs +++ b/SabreTools.IO/ParentablePath.cs @@ -1,7 +1,7 @@ using System; using System.IO; -namespace SabreTools.Library.IO +namespace SabreTools.IO { /// /// A path that optionally contains a parent root diff --git a/SabreTools.Library/IO/PathExtensions.cs b/SabreTools.IO/PathExtensions.cs similarity index 100% rename from SabreTools.Library/IO/PathExtensions.cs rename to SabreTools.IO/PathExtensions.cs diff --git a/SabreTools.IO/SabreTools.IO.csproj b/SabreTools.IO/SabreTools.IO.csproj new file mode 100644 index 00000000..d076577d --- /dev/null +++ b/SabreTools.IO/SabreTools.IO.csproj @@ -0,0 +1,19 @@ + + + + net48;netcoreapp3.1;net5.0 + win10-x64;win7-x86 + Debug;Release + AnyCPU;x64 + + + + NET_FRAMEWORK + + + + + + + + diff --git a/SabreTools.Library/IO/SeparatedValueReader.cs b/SabreTools.IO/SeparatedValueReader.cs similarity index 99% rename from SabreTools.Library/IO/SeparatedValueReader.cs rename to SabreTools.IO/SeparatedValueReader.cs index 8064b14d..bc4ca93e 100644 --- a/SabreTools.Library/IO/SeparatedValueReader.cs +++ b/SabreTools.IO/SeparatedValueReader.cs @@ -5,7 +5,7 @@ using System.Linq; using System.Text; using System.Text.RegularExpressions; -namespace SabreTools.Library.IO +namespace SabreTools.IO { public class SeparatedValueReader : IDisposable { diff --git a/SabreTools.Library/IO/SeparatedValueWriter.cs b/SabreTools.IO/SeparatedValueWriter.cs similarity index 99% rename from SabreTools.Library/IO/SeparatedValueWriter.cs rename to SabreTools.IO/SeparatedValueWriter.cs index f929fa21..3c57b2ca 100644 --- a/SabreTools.Library/IO/SeparatedValueWriter.cs +++ b/SabreTools.IO/SeparatedValueWriter.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; -namespace SabreTools.Library.IO +namespace SabreTools.IO { public class SeparatedValueWriter : IDisposable { diff --git a/SabreTools.Library/IO/XmlTextWriterExtensions.cs b/SabreTools.IO/XmlTextWriterExtensions.cs similarity index 98% rename from SabreTools.Library/IO/XmlTextWriterExtensions.cs rename to SabreTools.IO/XmlTextWriterExtensions.cs index 505d5ba1..026abe53 100644 --- a/SabreTools.Library/IO/XmlTextWriterExtensions.cs +++ b/SabreTools.IO/XmlTextWriterExtensions.cs @@ -1,6 +1,6 @@ using System.Xml; -namespace SabreTools.Library.IO +namespace SabreTools.IO { /// /// Additional methods for XmlTextWriter diff --git a/SabreTools.Library/DatFiles/AttractMode.cs b/SabreTools.Library/DatFiles/AttractMode.cs index a4792a04..e3983560 100644 --- a/SabreTools.Library/DatFiles/AttractMode.cs +++ b/SabreTools.Library/DatFiles/AttractMode.cs @@ -4,6 +4,7 @@ using System.IO; using System.Text; using SabreTools.Data; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; diff --git a/SabreTools.Library/DatFiles/ClrMamePro.cs b/SabreTools.Library/DatFiles/ClrMamePro.cs index 31246900..cf8b8595 100644 --- a/SabreTools.Library/DatFiles/ClrMamePro.cs +++ b/SabreTools.Library/DatFiles/ClrMamePro.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Text; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; using SabreTools.Library.Tools; diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs index 58a6508a..b31f646a 100644 --- a/SabreTools.Library/DatFiles/DatFile.cs +++ b/SabreTools.Library/DatFiles/DatFile.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; using System.Xml.Serialization; using SabreTools.Data; +using SabreTools.IO; using SabreTools.Logging; using SabreTools.Library.DatItems; using SabreTools.Library.FileTypes; diff --git a/SabreTools.Library/DatFiles/DosCenter.cs b/SabreTools.Library/DatFiles/DosCenter.cs index 234f5041..e2b0601e 100644 --- a/SabreTools.Library/DatFiles/DosCenter.cs +++ b/SabreTools.Library/DatFiles/DosCenter.cs @@ -4,6 +4,7 @@ using System.IO; using System.Linq; using System.Text; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; using SabreTools.Library.Tools; diff --git a/SabreTools.Library/DatFiles/EverdriveSmdb.cs b/SabreTools.Library/DatFiles/EverdriveSmdb.cs index 9ffc7f32..f4505680 100644 --- a/SabreTools.Library/DatFiles/EverdriveSmdb.cs +++ b/SabreTools.Library/DatFiles/EverdriveSmdb.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Text; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; diff --git a/SabreTools.Library/DatFiles/Hashfile.cs b/SabreTools.Library/DatFiles/Hashfile.cs index b26ee1bd..20af0744 100644 --- a/SabreTools.Library/DatFiles/Hashfile.cs +++ b/SabreTools.Library/DatFiles/Hashfile.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Text; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; diff --git a/SabreTools.Library/DatFiles/ItemDictionary.cs b/SabreTools.Library/DatFiles/ItemDictionary.cs index f6bead2c..3cbec24d 100644 --- a/SabreTools.Library/DatFiles/ItemDictionary.cs +++ b/SabreTools.Library/DatFiles/ItemDictionary.cs @@ -9,9 +9,9 @@ using System.Threading.Tasks; using System.Xml.Serialization; using SabreTools.Data; +using SabreTools.IO; using SabreTools.Logging; using SabreTools.Library.DatItems; -using SabreTools.Library.IO; using SabreTools.Library.Reports; using NaturalSort; using Newtonsoft.Json; diff --git a/SabreTools.Library/DatFiles/Listxml.cs b/SabreTools.Library/DatFiles/Listxml.cs index baa6e3b8..34e835a0 100644 --- a/SabreTools.Library/DatFiles/Listxml.cs +++ b/SabreTools.Library/DatFiles/Listxml.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Xml; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; using SabreTools.Library.Tools; diff --git a/SabreTools.Library/DatFiles/Logiqx.cs b/SabreTools.Library/DatFiles/Logiqx.cs index 72af4ea6..c454486f 100644 --- a/SabreTools.Library/DatFiles/Logiqx.cs +++ b/SabreTools.Library/DatFiles/Logiqx.cs @@ -6,6 +6,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Xml; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; using SabreTools.Library.Tools; diff --git a/SabreTools.Library/DatFiles/OfflineList.cs b/SabreTools.Library/DatFiles/OfflineList.cs index b4229585..a7939cdf 100644 --- a/SabreTools.Library/DatFiles/OfflineList.cs +++ b/SabreTools.Library/DatFiles/OfflineList.cs @@ -4,6 +4,7 @@ using System.IO; using System.Text; using System.Xml; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; using SabreTools.Library.Tools; diff --git a/SabreTools.Library/DatFiles/OpenMSX.cs b/SabreTools.Library/DatFiles/OpenMSX.cs index e1de45e8..5ac4a57d 100644 --- a/SabreTools.Library/DatFiles/OpenMSX.cs +++ b/SabreTools.Library/DatFiles/OpenMSX.cs @@ -4,6 +4,7 @@ using System.IO; using System.Text; using System.Xml; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; using SabreTools.Library.Tools; diff --git a/SabreTools.Library/DatFiles/RomCenter.cs b/SabreTools.Library/DatFiles/RomCenter.cs index 90ddbc58..267d87f1 100644 --- a/SabreTools.Library/DatFiles/RomCenter.cs +++ b/SabreTools.Library/DatFiles/RomCenter.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Text; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; using SabreTools.Library.Tools; diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs index a0ded5d2..41d45a56 100644 --- a/SabreTools.Library/DatFiles/SeparatedValue.cs +++ b/SabreTools.Library/DatFiles/SeparatedValue.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Text; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; using SabreTools.Library.Tools; diff --git a/SabreTools.Library/DatFiles/SoftwareList.cs b/SabreTools.Library/DatFiles/SoftwareList.cs index 697476dc..9d10910c 100644 --- a/SabreTools.Library/DatFiles/SoftwareList.cs +++ b/SabreTools.Library/DatFiles/SoftwareList.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Xml; +using SabreTools.IO; using SabreTools.Library.DatItems; using SabreTools.Library.IO; using SabreTools.Library.Tools; diff --git a/SabreTools.Library/FileTypes/CHD/CHDFileV1.cs b/SabreTools.Library/FileTypes/CHD/CHDFileV1.cs index 05633af1..a8ba7d4c 100644 --- a/SabreTools.Library/FileTypes/CHD/CHDFileV1.cs +++ b/SabreTools.Library/FileTypes/CHD/CHDFileV1.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; -using SabreTools.Library.IO; +using SabreTools.IO; namespace SabreTools.Library.FileTypes.CHD { diff --git a/SabreTools.Library/FileTypes/CHD/CHDFileV2.cs b/SabreTools.Library/FileTypes/CHD/CHDFileV2.cs index a902cab9..fa2e8a71 100644 --- a/SabreTools.Library/FileTypes/CHD/CHDFileV2.cs +++ b/SabreTools.Library/FileTypes/CHD/CHDFileV2.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; -using SabreTools.Library.IO; +using SabreTools.IO; namespace SabreTools.Library.FileTypes.CHD { diff --git a/SabreTools.Library/FileTypes/CHD/CHDFileV3.cs b/SabreTools.Library/FileTypes/CHD/CHDFileV3.cs index f9c32b9c..d73da00c 100644 --- a/SabreTools.Library/FileTypes/CHD/CHDFileV3.cs +++ b/SabreTools.Library/FileTypes/CHD/CHDFileV3.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; -using SabreTools.Library.IO; +using SabreTools.IO; namespace SabreTools.Library.FileTypes.CHD { diff --git a/SabreTools.Library/FileTypes/CHD/CHDFileV4.cs b/SabreTools.Library/FileTypes/CHD/CHDFileV4.cs index 190cff13..5ebcd452 100644 --- a/SabreTools.Library/FileTypes/CHD/CHDFileV4.cs +++ b/SabreTools.Library/FileTypes/CHD/CHDFileV4.cs @@ -2,7 +2,7 @@ using System.IO; using System.Text; -using SabreTools.Library.IO; +using SabreTools.IO; namespace SabreTools.Library.FileTypes.CHD { diff --git a/SabreTools.Library/FileTypes/CHD/CHDFileV5.cs b/SabreTools.Library/FileTypes/CHD/CHDFileV5.cs index 2643fdd3..1a25171a 100644 --- a/SabreTools.Library/FileTypes/CHD/CHDFileV5.cs +++ b/SabreTools.Library/FileTypes/CHD/CHDFileV5.cs @@ -1,7 +1,7 @@ using System.IO; using System.Text; -using SabreTools.Library.IO; +using SabreTools.IO; namespace SabreTools.Library.FileTypes.CHD { diff --git a/SabreTools.Library/FileTypes/CHDFile.cs b/SabreTools.Library/FileTypes/CHDFile.cs index 82b1d4ad..e918d4cc 100644 --- a/SabreTools.Library/FileTypes/CHDFile.cs +++ b/SabreTools.Library/FileTypes/CHDFile.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; +using SabreTools.IO; using SabreTools.Library.FileTypes.CHD; using SabreTools.Library.IO; diff --git a/SabreTools.Library/FileTypes/Folder.cs b/SabreTools.Library/FileTypes/Folder.cs index 6bfd8807..7b410176 100644 --- a/SabreTools.Library/FileTypes/Folder.cs +++ b/SabreTools.Library/FileTypes/Folder.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using SabreTools.IO; using SabreTools.Logging; using SabreTools.Library.DatItems; using SabreTools.Library.IO; diff --git a/SabreTools.Library/FileTypes/GZipArchive.cs b/SabreTools.Library/FileTypes/GZipArchive.cs index 865ca99d..24840654 100644 --- a/SabreTools.Library/FileTypes/GZipArchive.cs +++ b/SabreTools.Library/FileTypes/GZipArchive.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text.RegularExpressions; using SabreTools.Data; +using SabreTools.IO; using SabreTools.Library.DatFiles; using SabreTools.Library.DatItems; using SabreTools.Library.IO; diff --git a/SabreTools.Library/FileTypes/XZArchive.cs b/SabreTools.Library/FileTypes/XZArchive.cs index fde1a188..9fef7699 100644 --- a/SabreTools.Library/FileTypes/XZArchive.cs +++ b/SabreTools.Library/FileTypes/XZArchive.cs @@ -4,6 +4,7 @@ using System.IO; using System.Text.RegularExpressions; using SabreTools.Data; +using SabreTools.IO; using SabreTools.Library.DatFiles; using SabreTools.Library.DatItems; using SabreTools.Library.IO; diff --git a/SabreTools.Library/Filtering/ExtraIniItem.cs b/SabreTools.Library/Filtering/ExtraIniItem.cs index 850b6b0d..a246bb34 100644 --- a/SabreTools.Library/Filtering/ExtraIniItem.cs +++ b/SabreTools.Library/Filtering/ExtraIniItem.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; +using SabreTools.IO; using SabreTools.Logging; using SabreTools.Library.DatItems; using SabreTools.Library.IO; diff --git a/SabreTools.Library/IO/FileExtensions.cs b/SabreTools.Library/IO/FileExtensions.cs index ed52c06e..cb23aac8 100644 --- a/SabreTools.Library/IO/FileExtensions.cs +++ b/SabreTools.Library/IO/FileExtensions.cs @@ -6,6 +6,7 @@ using System.Xml; using System.Xml.Schema; using SabreTools.Data; +using SabreTools.IO; using SabreTools.Logging; using SabreTools.Library.DatFiles; using SabreTools.Library.FileTypes; diff --git a/SabreTools.Library/IO/Transform.cs b/SabreTools.Library/IO/Transform.cs index b677f336..8d6bd0f6 100644 --- a/SabreTools.Library/IO/Transform.cs +++ b/SabreTools.Library/IO/Transform.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using SabreTools.Data; +using SabreTools.IO; using SabreTools.Logging; using SabreTools.Library.DatFiles; using SabreTools.Library.FileTypes; diff --git a/SabreTools.Library/SabreTools.Library.csproj b/SabreTools.Library/SabreTools.Library.csproj index 67b70739..7a4cda9a 100644 --- a/SabreTools.Library/SabreTools.Library.csproj +++ b/SabreTools.Library/SabreTools.Library.csproj @@ -13,6 +13,7 @@ + diff --git a/SabreTools.sln b/SabreTools.sln index cbae9f37..76c2116a 100644 --- a/SabreTools.sln +++ b/SabreTools.sln @@ -24,6 +24,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Help", "SabreToo EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Logging", "SabreTools.Logging\SabreTools.Logging.csproj", "{3D54D896-19F0-4723-B1E3-E40FAFE5A078}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.IO", "SabreTools.IO\SabreTools.IO.csproj", "{884163E0-1B61-468C-8839-7C67AB44EA3F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -88,6 +90,14 @@ Global {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Release|Any CPU.Build.0 = Release|Any CPU {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Release|x64.ActiveCfg = Release|Any CPU {3D54D896-19F0-4723-B1E3-E40FAFE5A078}.Release|x64.Build.0 = Release|Any CPU + {884163E0-1B61-468C-8839-7C67AB44EA3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {884163E0-1B61-468C-8839-7C67AB44EA3F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {884163E0-1B61-468C-8839-7C67AB44EA3F}.Debug|x64.ActiveCfg = Debug|Any CPU + {884163E0-1B61-468C-8839-7C67AB44EA3F}.Debug|x64.Build.0 = Debug|Any CPU + {884163E0-1B61-468C-8839-7C67AB44EA3F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {884163E0-1B61-468C-8839-7C67AB44EA3F}.Release|Any CPU.Build.0 = Release|Any CPU + {884163E0-1B61-468C-8839-7C67AB44EA3F}.Release|x64.ActiveCfg = Release|Any CPU + {884163E0-1B61-468C-8839-7C67AB44EA3F}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/SabreTools/Features/Batch.cs b/SabreTools/Features/Batch.cs index ae4b8838..9af19c93 100644 --- a/SabreTools/Features/Batch.cs +++ b/SabreTools/Features/Batch.cs @@ -5,10 +5,10 @@ using System.Linq; using System.Text.RegularExpressions; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; using SabreTools.Library.DatItems; using SabreTools.Library.Filtering; -using SabreTools.Library.IO; using SabreTools.Library.Tools; namespace SabreTools.Features diff --git a/SabreTools/Features/Extract.cs b/SabreTools/Features/Extract.cs index 9acecd57..dd931533 100644 --- a/SabreTools/Features/Extract.cs +++ b/SabreTools/Features/Extract.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.IO; namespace SabreTools.Features diff --git a/SabreTools/Features/Restore.cs b/SabreTools/Features/Restore.cs index 899b7b42..bbdd6bd7 100644 --- a/SabreTools/Features/Restore.cs +++ b/SabreTools/Features/Restore.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.IO; namespace SabreTools.Features diff --git a/SabreTools/Features/Sort.cs b/SabreTools/Features/Sort.cs index ed3e0d3f..7c4c06b6 100644 --- a/SabreTools/Features/Sort.cs +++ b/SabreTools/Features/Sort.cs @@ -2,9 +2,9 @@ using System.IO; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; using SabreTools.Library.FileTypes; -using SabreTools.Library.IO; using SabreTools.Library.Tools; namespace SabreTools.Features diff --git a/SabreTools/Features/Split.cs b/SabreTools/Features/Split.cs index 6b453847..89e3a570 100644 --- a/SabreTools/Features/Split.cs +++ b/SabreTools/Features/Split.cs @@ -3,9 +3,9 @@ using System.Threading.Tasks; using SabreTools.Data; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; using SabreTools.Library.DatItems; -using SabreTools.Library.IO; using SabreTools.Library.Tools; namespace SabreTools.Features diff --git a/SabreTools/Features/Update.cs b/SabreTools/Features/Update.cs index c33dfd4f..eb713805 100644 --- a/SabreTools/Features/Update.cs +++ b/SabreTools/Features/Update.cs @@ -5,9 +5,9 @@ using System.Threading.Tasks; using SabreTools.Data; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; using SabreTools.Library.DatItems; -using SabreTools.Library.IO; using SabreTools.Library.Tools; namespace SabreTools.Features diff --git a/SabreTools/Features/Verify.cs b/SabreTools/Features/Verify.cs index 31e85f76..6f951368 100644 --- a/SabreTools/Features/Verify.cs +++ b/SabreTools/Features/Verify.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using SabreTools.Help; +using SabreTools.IO; using SabreTools.Library.DatFiles; -using SabreTools.Library.IO; using SabreTools.Library.Tools; namespace SabreTools.Features