From 4b10b0cdd14fc1f35f0a9a0a1e8bd539fe74621f Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 1 Sep 2016 10:10:02 -0700 Subject: [PATCH] [Output] Add possibility for ignoring blanks flag --- SabreTools.Helper/Tools/Output.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/SabreTools.Helper/Tools/Output.cs b/SabreTools.Helper/Tools/Output.cs index 4372c2b3..a79c36e2 100644 --- a/SabreTools.Helper/Tools/Output.cs +++ b/SabreTools.Helper/Tools/Output.cs @@ -17,13 +17,13 @@ namespace SabreTools.Helper /// Logger object for console and/or file output /// True if games should only be compared on game and file name (default), false if system and source are counted /// True if DAT statistics should be output on write, false otherwise (default) + /// True if blank roms should be skipped on output, false otherwise (default) /// True if the DAT was written correctly, false otherwise /// /// The following features have been requested for file output: /// - Have the ability to strip special (non-ASCII) characters from rom information - /// - Add a flag for ignoring roms with blank sizes /// - public static bool WriteDatfile(Dat datdata, string outDir, Logger logger, bool norename = true, bool stats = false) + public static bool WriteDatfile(Dat datdata, string outDir, Logger logger, bool norename = true, bool stats = false, bool ignoreblanks = false) { // If the DAT has no output format, default to XML if (datdata.OutputFormat == OutputFormat.None) @@ -145,7 +145,7 @@ namespace SabreTools.Helper } // Now, output the rom data - WriteRomData(sw, rom, lastgame, datdata, depth, logger); + WriteRomData(sw, rom, lastgame, datdata, depth, logger, ignoreblanks); // Set the new data to compare against splitpath = newsplit; @@ -418,9 +418,16 @@ namespace SabreTools.Helper /// DatData object representing DAT information /// Current depth to output file at (SabreDAT only) /// Logger object for file and console output + /// True if blank roms should be skipped on output, false otherwise (default) /// True if the data was written, false on error - public static bool WriteRomData(StreamWriter sw, Rom rom, string lastgame, Dat datdata, int depth, Logger logger) + public static bool WriteRomData(StreamWriter sw, Rom rom, string lastgame, Dat datdata, int depth, Logger logger, bool ignoreblanks = false) { + // If we are in ignore blanks mode AND we have a blank (0-size) rom, skip + if (ignoreblanks && (rom.HashData.Size == 0 || rom.HashData.Size == -1)) + { + return true; + } + try { string state = "";