diff --git a/SabreTools.FileTypes/FileTypeTool.cs b/SabreTools.FileTypes/FileTypeTool.cs index 4359ae39..0394ed5f 100644 --- a/SabreTools.FileTypes/FileTypeTool.cs +++ b/SabreTools.FileTypes/FileTypeTool.cs @@ -52,25 +52,10 @@ namespace SabreTools.FileTypes // Get input information var fileType = GetFileType(input); Stream inputStream = GetInfoStream(input, header); - - // Get the info in the proper manner - BaseFile? baseFile; -#if NET20 || NET35 - if (fileType == FileType.AaruFormat && (asFiles & TreatAsFile.AaruFormat) == 0) - baseFile = AaruFormat.Create(inputStream); - else if (fileType == FileType.CHD && (asFiles & TreatAsFile.CHD) == 0) - baseFile = CHDFile.Create(inputStream); -#else - if (fileType == FileType.AaruFormat && !asFiles.HasFlag(TreatAsFile.AaruFormat)) - baseFile = AaruFormat.Create(inputStream); - else if (fileType == FileType.CHD && !asFiles.HasFlag(TreatAsFile.CHD)) - baseFile = CHDFile.Create(inputStream); -#endif - else - baseFile = GetInfo(inputStream, hashes: hashes, keepReadOpen: false); + BaseFile? baseFile = GetBaseFile(inputStream, fileType, hashes, asFiles); // Dispose of the input stream - inputStream?.Dispose(); + inputStream.Dispose(); // Add unique data from the file baseFile!.Filename = Path.GetFileName(input); @@ -174,12 +159,29 @@ namespace SabreTools.FileTypes } } + /// + /// Get the correct base file based on the type and filter options + /// + private static BaseFile? GetBaseFile(Stream inputStream, FileType? fileType, HashType[] hashes, TreatAsFile asFiles) + { +#if NET20 || NET35 + if (fileType == FileType.AaruFormat && (asFiles & TreatAsFile.AaruFormat) == 0) + return AaruFormat.Create(inputStream); + else if (fileType == FileType.CHD && (asFiles & TreatAsFile.CHD) == 0) + return CHDFile.Create(inputStream); +#else + if (fileType == FileType.AaruFormat && !asFiles.HasFlag(TreatAsFile.AaruFormat)) + return AaruFormat.Create(inputStream); + else if (fileType == FileType.CHD && !asFiles.HasFlag(TreatAsFile.CHD)) + return CHDFile.Create(inputStream); +#endif + + return GetInfo(inputStream, hashes, keepReadOpen: false); + } + /// /// Get the required stream for info hashing /// - /// Filename to get information from - /// Populated string representing the name of the skipper to use, a blank string to use the first available checker, null otherwise - /// Open stream representing the file private static Stream GetInfoStream(string input, string? header) { // Open the file directly