diff --git a/SabreTools/Partials/SabreTools_Helpers.cs b/SabreTools/Partials/SabreTools_Helpers.cs
index 100f668e..13cefc35 100644
--- a/SabreTools/Partials/SabreTools_Helpers.cs
+++ b/SabreTools/Partials/SabreTools_Helpers.cs
@@ -120,6 +120,77 @@ ORDER BY system.manufacturer, system.name";
return;
}
+ ///
+ /// Get the multiplier to be used with the size given
+ ///
+ /// String with possible size with extension
+ /// Tuple of multiplier to use on final size and fixed size string
+ private static long GetSizeFromString(string sizestring)
+ {
+ long size = 0;
+
+ // Make sure the string is in lower case
+ sizestring = sizestring.ToLowerInvariant();
+
+ // Get any trailing size identifiers
+ long multiplier = 1;
+ if (sizestring.EndsWith("kb"))
+ {
+ multiplier = Constants.KiloByte;
+ }
+ else if (sizestring.EndsWith("kib"))
+ {
+ multiplier = Constants.KibiByte;
+ }
+ else if (sizestring.EndsWith("mb"))
+ {
+ multiplier = Constants.MegaByte;
+ }
+ else if (sizestring.EndsWith("mib"))
+ {
+ multiplier = Constants.MibiByte;
+ }
+ else if (sizestring.EndsWith("gb"))
+ {
+ multiplier = Constants.GigaByte;
+ }
+ else if (sizestring.EndsWith("gib"))
+ {
+ multiplier = Constants.GibiByte;
+ }
+ else if (sizestring.EndsWith("tb"))
+ {
+ multiplier = Constants.TeraByte;
+ }
+ else if (sizestring.EndsWith("tib"))
+ {
+ multiplier = Constants.TibiByte;
+ }
+ else if (sizestring.EndsWith("pb"))
+ {
+ multiplier = Constants.PetaByte;
+ }
+ else if (sizestring.EndsWith("pib"))
+ {
+ multiplier = Constants.PibiByte;
+ }
+
+ // Remove any trailing identifiers
+ sizestring = sizestring.TrimEnd(new char[] { 'k', 'm', 'g', 't', 'p', 'i', 'b' });
+
+ // Now try to get the size from the string
+ if (!Int64.TryParse(sizestring, out size))
+ {
+ size = -1;
+ }
+ else
+ {
+ size *= multiplier;
+ }
+
+ return size;
+ }
+
#endregion
}
}
diff --git a/SabreTools/SabreTools.cs b/SabreTools/SabreTools.cs
index 3a1ff751..65f758b9 100644
--- a/SabreTools/SabreTools.cs
+++ b/SabreTools/SabreTools.cs
@@ -519,17 +519,11 @@ namespace SabreTools
}
else if (temparg.StartsWith("-seq=") || temparg.StartsWith("--equal="))
{
- if (!Int64.TryParse(temparg.Split('=')[1], out seq))
- {
- seq = -1;
- }
+ seq = GetSizeFromString(temparg.Split('=')[1]);
}
else if (temparg.StartsWith("-sgt=") || temparg.StartsWith("--greater="))
{
- if (!Int64.TryParse(temparg.Split('=')[1], out sgt))
- {
- sgt = -1;
- }
+ sgt = GetSizeFromString(temparg.Split('=')[1]);
}
else if (temparg.StartsWith("-sha1=") || temparg.StartsWith("--sha1="))
{
@@ -537,10 +531,7 @@ namespace SabreTools
}
else if (temparg.StartsWith("-slt=") || temparg.StartsWith("--less="))
{
- if (!Int64.TryParse(temparg.Split('=')[1], out slt))
- {
- slt = -1;
- }
+ slt = GetSizeFromString(temparg.Split('=')[1]);
}
else if (temparg.StartsWith("-source=") && sources == "")
{