From 9a9a977cc47998d41b3d429ca467b906a40de55e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 3 Jun 2021 22:13:50 -0700 Subject: [PATCH] Simplify flag validation Instead of trying to determine if something is a flag, just check if it's one of the supported flags. This should reduce the amount of potential issues that come along with making assumptions about what a parameter could look like. --- MPF.Library/Data/BaseParameters.cs | 36 ++++---------------- MPF.Library/DiscImageCreator/Parameters.cs | 38 +++++++++++----------- 2 files changed, 25 insertions(+), 49 deletions(-) diff --git a/MPF.Library/Data/BaseParameters.cs b/MPF.Library/Data/BaseParameters.cs index b0920fee..fab36648 100644 --- a/MPF.Library/Data/BaseParameters.cs +++ b/MPF.Library/Data/BaseParameters.cs @@ -365,30 +365,6 @@ namespace MPF.Data return string.Join("\n", File.ReadAllLines(filename)); } - /// - /// Returns whether a string is a flag (starts with '/') - /// - /// String value to check - /// True if it's a flag, false otherwise - /// - /// TODO: Can we just check if it's in the list of supported flags? - /// - protected static bool IsFlag(string parameter) - { - // Remove quotes to avoid any issues - parameter = parameter.Trim('\"'); - - // Forward slashes are nothing but flags - if (parameter.StartsWith("/")) - return true; - - // Dashes *might* be parameters, unless it's purely numeric - else if (parameter.StartsWith("-") && !Int64.TryParse(parameter, out long _)) - return true; - - return false; - } - /// /// Returns whether a string is a valid drive letter /// @@ -573,7 +549,7 @@ namespace MPF.Data return false; } } - else if (IsFlag(parts[i + 1])) + else if (IsFlagSupported(parts[i + 1])) { if (missingAllowed) { @@ -645,7 +621,7 @@ namespace MPF.Data return null; } - else if (IsFlag(parts[i + 1])) + else if (IsFlagSupported(parts[i + 1])) { if (missingAllowed) this[longFlagString] = true; @@ -724,7 +700,7 @@ namespace MPF.Data return null; } - else if (IsFlag(parts[i + 1])) + else if (IsFlagSupported(parts[i + 1])) { if (missingAllowed) this[longFlagString] = true; @@ -802,7 +778,7 @@ namespace MPF.Data return null; } - else if (IsFlag(parts[i + 1])) + else if (IsFlagSupported(parts[i + 1])) { if (missingAllowed) this[longFlagString] = true; @@ -880,7 +856,7 @@ namespace MPF.Data return null; } - else if (IsFlag(parts[i + 1])) + else if (IsFlagSupported(parts[i + 1])) { if (missingAllowed) this[longFlagString] = true; @@ -958,7 +934,7 @@ namespace MPF.Data return null; } - else if (IsFlag(parts[i + 1])) + else if (IsFlagSupported(parts[i + 1])) { if (missingAllowed) this[longFlagString] = true; diff --git a/MPF.Library/DiscImageCreator/Parameters.cs b/MPF.Library/DiscImageCreator/Parameters.cs index dc5ac6cd..1804f27e 100644 --- a/MPF.Library/DiscImageCreator/Parameters.cs +++ b/MPF.Library/DiscImageCreator/Parameters.cs @@ -1715,7 +1715,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -1747,7 +1747,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -1780,7 +1780,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -1802,7 +1802,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -1834,7 +1834,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -1856,7 +1856,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -1894,7 +1894,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -1910,7 +1910,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -1927,7 +1927,7 @@ namespace MPF.DiscImageCreator if (parts.Count != 2) return false; - if (IsFlag(parts[1]) || !File.Exists(parts[1])) + if (IsFlagSupported(parts[1]) || !File.Exists(parts[1])) return false; else Filename = parts[1]; @@ -1938,12 +1938,12 @@ namespace MPF.DiscImageCreator if (parts.Count != 3) return false; - if (IsFlag(parts[1]) || !File.Exists(parts[1])) + if (IsFlagSupported(parts[1]) || !File.Exists(parts[1])) return false; else Filename = parts[1]; - if (IsFlag(parts[2]) || !File.Exists(parts[2])) + if (IsFlagSupported(parts[2]) || !File.Exists(parts[2])) return false; else OptiarcFilename = parts[2]; @@ -1970,7 +1970,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -2009,7 +2009,7 @@ namespace MPF.DiscImageCreator if (parts.Count != 2) return false; - if (IsFlag(parts[1]) || !File.Exists(parts[1])) + if (IsFlagSupported(parts[1]) || !File.Exists(parts[1])) return false; else Filename = parts[1]; @@ -2025,7 +2025,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -2042,7 +2042,7 @@ namespace MPF.DiscImageCreator if (parts.Count != 2) return false; - if (IsFlag(parts[1]) || !File.Exists(parts[1])) + if (IsFlagSupported(parts[1]) || !File.Exists(parts[1])) return false; else Filename = parts[1]; @@ -2058,7 +2058,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -2082,7 +2082,7 @@ namespace MPF.DiscImageCreator else DriveLetter = parts[1]; - if (IsFlag(parts[2])) + if (IsFlagSupported(parts[2])) return false; else Filename = parts[2]; @@ -2143,7 +2143,7 @@ namespace MPF.DiscImageCreator { break; } - else if (IsFlag(parts[i + 1])) + else if (IsFlagSupported(parts[i + 1])) { break; } @@ -2261,7 +2261,7 @@ namespace MPF.DiscImageCreator { break; } - else if (IsFlag(parts[i + 1])) + else if (IsFlagSupported(parts[i + 1])) { break; }