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.
This commit is contained in:
Matt Nadareski
2021-06-03 22:13:50 -07:00
parent ab5869331b
commit 9a9a977cc4
2 changed files with 25 additions and 49 deletions

View File

@@ -365,30 +365,6 @@ namespace MPF.Data
return string.Join("\n", File.ReadAllLines(filename));
}
/// <summary>
/// Returns whether a string is a flag (starts with '/')
/// </summary>
/// <param name="parameter">String value to check</param>
/// <returns>True if it's a flag, false otherwise</returns>
/// <remarks>
/// TODO: Can we just check if it's in the list of supported flags?
/// </remarks>
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;
}
/// <summary>
/// Returns whether a string is a valid drive letter
/// </summary>
@@ -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;

View File

@@ -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;
}