diff --git a/SabreTools.Helper/Objects/Headerer.cs b/SabreTools.Helper/Objects/Headerer.cs index d6999ad9..28a0bc2e 100644 --- a/SabreTools.Helper/Objects/Headerer.cs +++ b/SabreTools.Helper/Objects/Headerer.cs @@ -1,6 +1,7 @@ using Mono.Data.Sqlite; using SabreTools.Helper; using System; +using System.Collections.Generic; using System.IO; namespace SabreTools @@ -11,7 +12,7 @@ namespace SabreTools public class Headerer { // Private instance variables - private string _input; + private List _inputs; private bool _restore; private Logger _logger; @@ -23,12 +24,12 @@ namespace SabreTools /// /// Create a new Headerer object /// - /// Input file or folder name + /// Input file or folder names /// False if we're extracting headers (default), true if we're restoring them /// Logger object for file and console output - public Headerer(string input, bool restore, Logger logger) + public Headerer(List inputs, bool restore, Logger logger) { - _input = input; + _inputs = inputs; _restore = restore; _logger = logger; } @@ -39,46 +40,44 @@ namespace SabreTools /// True if it succeeded, false otherwise public bool Process() { - if (_restore) + bool success = true; + + foreach (string input in _inputs) { - // If it's a single file, just check it - if (File.Exists(_input)) + if (File.Exists(input)) { - RestoreHeader(_input); + success &= ProcessHelper(input); } - // If it's a directory, recursively check all - else if (Directory.Exists(_input)) + else if (Directory.Exists(input)) { - foreach (string sub in Directory.EnumerateFiles(_input, "*", SearchOption.AllDirectories)) + foreach (string sub in Directory.EnumerateFiles(input, "*", SearchOption.AllDirectories)) { if (sub != ".." && sub != ".") { - RestoreHeader(sub); - } - } - } - } - else - { - // If it's a single file, just check it - if (File.Exists(_input)) - { - DetectSkipperAndTransform(_input); - } - // If it's a directory, recursively check all - else if (Directory.Exists(_input)) - { - foreach (string sub in Directory.EnumerateFiles(_input, "*", SearchOption.AllDirectories)) - { - if (sub != ".." && sub != ".") - { - DetectSkipperAndTransform(sub); + success &= RestoreHeader(sub); } } } } - return true; + return success; + } + + /// + /// Intermediary to route the input file to the correct method(s) + /// + /// Input file name + /// True on success, false otherwise + private bool ProcessHelper(string input) + { + if (_restore) + { + return RestoreHeader(input); + } + else + { + return DetectSkipperAndTransform(input); + } } /// @@ -86,7 +85,7 @@ namespace SabreTools /// /// Name of the file to be parsed /// True if the output file was created, false otherwise - public bool DetectSkipperAndTransform(string file) + private bool DetectSkipperAndTransform(string file) { _logger.User("\nGetting skipper information for '" + file + "'"); @@ -145,7 +144,7 @@ namespace SabreTools /// String representing the header bytes /// SHA-1 of the deheadered file /// HeaderType representing the detected header - public void AddHeaderToDatabase(string header, string SHA1, HeaderType type) + private void AddHeaderToDatabase(string header, string SHA1, HeaderType type) { bool exists = false; @@ -184,7 +183,7 @@ namespace SabreTools /// /// Name of the file to be parsed /// True if a header was found and appended, false otherwise - public bool RestoreHeader(string file) + private bool RestoreHeader(string file) { // First, get the SHA-1 hash of the file Rom rom = FileTools.GetSingleFileInfo(file); diff --git a/SabreTools/Partials/SabreTools_Inits.cs b/SabreTools/Partials/SabreTools_Inits.cs index 43c03c53..efe35f71 100644 --- a/SabreTools/Partials/SabreTools_Inits.cs +++ b/SabreTools/Partials/SabreTools_Inits.cs @@ -322,11 +322,8 @@ namespace SabreTools /// Logger object for file and console output private static void InitHeaderer(List inputs, bool restore, Logger logger) { - foreach (string input in inputs) - { - Headerer headerer = new Headerer(input, restore, logger); - headerer.Process(); - } + Headerer headerer = new Headerer(inputs, restore, logger); + headerer.Process(); } ///