From bcfa68fb857c888627e680a25fe6de02640b61a1 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 29 Aug 2016 12:23:02 -0700 Subject: [PATCH] [ArchiveTools] Abstract out getting scan level --- SabreTools.Helper/Tools/ArchiveTools.cs | 43 +++++++++++++++++++++++++ SimpleSort/SimpleSort.cs | 31 +++--------------- TGZTest/TGZTest.cs | 29 ++--------------- 3 files changed, 49 insertions(+), 54 deletions(-) diff --git a/SabreTools.Helper/Tools/ArchiveTools.cs b/SabreTools.Helper/Tools/ArchiveTools.cs index 065e809b..4204150e 100644 --- a/SabreTools.Helper/Tools/ArchiveTools.cs +++ b/SabreTools.Helper/Tools/ArchiveTools.cs @@ -785,6 +785,49 @@ namespace SabreTools.Helper return outtype; } + /// + /// Get if the current file should be scanned internally and externally + /// + /// Name of the input file to check + /// User-defined scan level for 7z archives + /// User-defined scan level for GZ archives + /// User-defined scan level for RAR archives + /// User-defined scan level for Zip archives + /// Logger object for file and console output + /// Output parameter determining if file should be processed externally + /// Output parameter determining if file should be processed internally + public static void GetInternalExternalProcess(string input, ArchiveScanLevel sevenzip, ArchiveScanLevel gzip, + ArchiveScanLevel rar, ArchiveScanLevel zip, Logger logger, out bool shouldExternalProcess, out bool shouldInternalProcess) + { + shouldExternalProcess = true; + shouldInternalProcess = true; + + ArchiveType? archiveType = ArchiveTools.GetCurrentArchiveType(input, logger); + switch (archiveType) + { + case null: + shouldExternalProcess = true; + shouldInternalProcess = false; + break; + case ArchiveType.GZip: + shouldExternalProcess = (gzip != ArchiveScanLevel.Internal); + shouldInternalProcess = (gzip != ArchiveScanLevel.External); + break; + case ArchiveType.Rar: + shouldExternalProcess = (rar != ArchiveScanLevel.Internal); + shouldInternalProcess = (rar != ArchiveScanLevel.External); + break; + case ArchiveType.SevenZip: + shouldExternalProcess = (sevenzip != ArchiveScanLevel.Internal); + shouldInternalProcess = (sevenzip != ArchiveScanLevel.External); + break; + case ArchiveType.Zip: + shouldExternalProcess = (zip != ArchiveScanLevel.Internal); + shouldInternalProcess = (zip != ArchiveScanLevel.External); + break; + } + } + /// /// http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to-hexadecimal-string-and-vice-versa /// diff --git a/SimpleSort/SimpleSort.cs b/SimpleSort/SimpleSort.cs index 056122f6..7557c057 100644 --- a/SimpleSort/SimpleSort.cs +++ b/SimpleSort/SimpleSort.cs @@ -462,6 +462,8 @@ 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 + return success; } @@ -484,33 +486,8 @@ namespace SabreTools _logger.Log(statement, _cursorTop, 0); // Get if the file should be scanned internally and externally - bool shouldExternalScan = true; - bool shouldInternalScan = true; - - ArchiveType? archiveType = ArchiveTools.GetCurrentArchiveType(input, _logger); - switch (archiveType) - { - case null: - shouldExternalScan = true; - shouldInternalScan = false; - break; - case ArchiveType.GZip: - shouldExternalScan = (_gz != ArchiveScanLevel.Internal); - shouldInternalScan = (_gz != ArchiveScanLevel.External); - break; - case ArchiveType.Rar: - shouldExternalScan = (_rar != ArchiveScanLevel.Internal); - shouldInternalScan = (_rar != ArchiveScanLevel.External); - break; - case ArchiveType.SevenZip: - shouldExternalScan = (_7z != ArchiveScanLevel.Internal); - shouldInternalScan = (_7z != ArchiveScanLevel.External); - break; - case ArchiveType.Zip: - shouldExternalScan = (_zip != ArchiveScanLevel.Internal); - shouldInternalScan = (_zip != ArchiveScanLevel.External); - break; - } + bool shouldExternalScan, shouldInternalScan; + ArchiveTools.GetInternalExternalProcess(input, _7z, _gz, _rar, _zip, _logger, out shouldExternalScan, out shouldInternalScan); // Hash and match the external files if (shouldExternalScan) diff --git a/TGZTest/TGZTest.cs b/TGZTest/TGZTest.cs index 8fb567c1..afa95e6d 100644 --- a/TGZTest/TGZTest.cs +++ b/TGZTest/TGZTest.cs @@ -271,33 +271,8 @@ namespace SabreTools _logger.User("Examining file " + input); // Get if the file should be scanned internally and externally - bool shouldExternalProcess = true; - bool shouldInternalProcess = true; - - ArchiveType? archiveType = ArchiveTools.GetCurrentArchiveType(input, _logger); - switch (archiveType) - { - case null: - shouldExternalProcess = true; - shouldInternalProcess = false; - break; - case ArchiveType.GZip: - shouldExternalProcess = (_gz != ArchiveScanLevel.Internal); - shouldInternalProcess = (_gz != ArchiveScanLevel.External); - break; - case ArchiveType.Rar: - shouldExternalProcess = (_rar != ArchiveScanLevel.Internal); - shouldInternalProcess = (_rar != ArchiveScanLevel.External); - break; - case ArchiveType.SevenZip: - shouldExternalProcess = (_7z != ArchiveScanLevel.Internal); - shouldInternalProcess = (_7z != ArchiveScanLevel.External); - break; - case ArchiveType.Zip: - shouldExternalProcess = (_zip != ArchiveScanLevel.Internal); - shouldInternalProcess = (_zip != ArchiveScanLevel.External); - break; - } + bool shouldExternalProcess, shouldInternalProcess; + ArchiveTools.GetInternalExternalProcess(input, _7z, _gz, _rar, _zip, _logger, out shouldExternalProcess, out shouldInternalProcess); // Do an external scan of the file, if necessary if (shouldExternalProcess)