diff --git a/SabreTools.Serialization/Deserializers/BaseBinaryDeserializer.cs b/SabreTools.Serialization/Deserializers/BaseBinaryDeserializer.cs index b0b6b336..477569ef 100644 --- a/SabreTools.Serialization/Deserializers/BaseBinaryDeserializer.cs +++ b/SabreTools.Serialization/Deserializers/BaseBinaryDeserializer.cs @@ -41,8 +41,21 @@ namespace SabreTools.Serialization.Deserializers /// public virtual TModel? Deserialize(string? path) { - using var stream = PathProcessor.OpenStream(path); - return Deserialize(stream); + try + { + // If we don't have a file + if (string.IsNullOrEmpty(path) || !File.Exists(path)) + return default; + + // Open the file for deserialization + using var stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + return Deserialize(stream); + } + catch + { + // TODO: Handle logging the exception + return default; + } } #endregion diff --git a/SabreTools.Serialization/Deserializers/ClrMamePro.cs b/SabreTools.Serialization/Deserializers/ClrMamePro.cs index 5eddd48d..bb180ae3 100644 --- a/SabreTools.Serialization/Deserializers/ClrMamePro.cs +++ b/SabreTools.Serialization/Deserializers/ClrMamePro.cs @@ -42,8 +42,21 @@ namespace SabreTools.Serialization.Deserializers /// public MetadataFile? Deserialize(string? path, bool quotes) { - using var stream = PathProcessor.OpenStream(path); - return Deserialize(stream, quotes); + try + { + // If we don't have a file + if (string.IsNullOrEmpty(path) || !File.Exists(path)) + return default; + + // Open the file for deserialization + using var stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + return Deserialize(stream, quotes); + } + catch + { + // TODO: Handle logging the exception + return default; + } } #endregion diff --git a/SabreTools.Serialization/Deserializers/Hashfile.cs b/SabreTools.Serialization/Deserializers/Hashfile.cs index 228350d4..e305cae1 100644 --- a/SabreTools.Serialization/Deserializers/Hashfile.cs +++ b/SabreTools.Serialization/Deserializers/Hashfile.cs @@ -41,8 +41,21 @@ namespace SabreTools.Serialization.Deserializers /// public Models.Hashfile.Hashfile? Deserialize(string? path, HashType hash) { - using var stream = PathProcessor.OpenStream(path); - return Deserialize(stream, hash); + try + { + // If we don't have a file + if (string.IsNullOrEmpty(path) || !File.Exists(path)) + return default; + + // Open the file for deserialization + using var stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + return Deserialize(stream, hash); + } + catch + { + // TODO: Handle logging the exception + return default; + } } #endregion diff --git a/SabreTools.Serialization/Deserializers/JsonFile.cs b/SabreTools.Serialization/Deserializers/JsonFile.cs index d3676de5..190aeb0a 100644 --- a/SabreTools.Serialization/Deserializers/JsonFile.cs +++ b/SabreTools.Serialization/Deserializers/JsonFile.cs @@ -56,8 +56,21 @@ namespace SabreTools.Serialization.Deserializers /// Filled object on success, null on error public T? Deserialize(string? path, Encoding encoding) { - using var data = PathProcessor.OpenStream(path); - return Deserialize(data, encoding); + try + { + // If we don't have a file + if (string.IsNullOrEmpty(path) || !File.Exists(path)) + return default; + + // Open the file for deserialization + using var stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + return Deserialize(stream, encoding); + } + catch + { + // TODO: Handle logging the exception + return default; + } } #endregion diff --git a/SabreTools.Serialization/Deserializers/PathProcessor.cs b/SabreTools.Serialization/Deserializers/PathProcessor.cs deleted file mode 100644 index 09375d87..00000000 --- a/SabreTools.Serialization/Deserializers/PathProcessor.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.IO; - -namespace SabreTools.Serialization.Deserializers -{ - internal class PathProcessor - { - /// - /// Opens a path as a stream in a safe manner, decompressing if needed - /// - /// Path to open as a stream - /// Stream representing the file, null on error - public static Stream? OpenStream(string? path) - { - try - { - // If we don't have a file - if (string.IsNullOrEmpty(path) || !File.Exists(path)) - return null; - - // Open the file for deserialization - return File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); - } - catch - { - // TODO: Handle logging the exception - return null; - } - } - } -} diff --git a/SabreTools.Serialization/Deserializers/SeparatedValue.cs b/SabreTools.Serialization/Deserializers/SeparatedValue.cs index 7924783b..0d206e38 100644 --- a/SabreTools.Serialization/Deserializers/SeparatedValue.cs +++ b/SabreTools.Serialization/Deserializers/SeparatedValue.cs @@ -49,8 +49,21 @@ namespace SabreTools.Serialization.Deserializers /// public MetadataFile? Deserialize(string? path, char delim) { - using var stream = PathProcessor.OpenStream(path); - return Deserialize(stream, delim); + try + { + // If we don't have a file + if (string.IsNullOrEmpty(path) || !File.Exists(path)) + return default; + + // Open the file for deserialization + using var stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + return Deserialize(stream, delim); + } + catch + { + // TODO: Handle logging the exception + return default; + } } #endregion diff --git a/SabreTools.Serialization/Printers/PortableExecutable.cs b/SabreTools.Serialization/Printers/PortableExecutable.cs index f27552ee..30465b6e 100644 --- a/SabreTools.Serialization/Printers/PortableExecutable.cs +++ b/SabreTools.Serialization/Printers/PortableExecutable.cs @@ -588,7 +588,6 @@ namespace SabreTools.Serialization.Printers return; } - // TODO: If more sections added, model this after the Export Table for (int i = 0; i < table.DebugDirectoryTable.Length; i++) { var entry = table.DebugDirectoryTable[i];