summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bytesizeparser.cc18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/bytesizeparser.cc b/src/bytesizeparser.cc
index 0bab316..329407d 100644
--- a/src/bytesizeparser.cc
+++ b/src/bytesizeparser.cc
@@ -58,13 +58,18 @@ std::size_t byteSizeParser(const std::string& argument)
std::string suffix;
bool error = false;
+ if(argument.find('-') != std::string::npos)
+ {
+ error = true;
+ }
+
try
{
stream_size = std::stoi(argument, &suffix_index);
}
catch(std::invalid_argument)
{
- std::cerr << "Invalid option for diskstreamsize" << std::endl;
+ std::cerr << "Invalid argument for diskstreamsize" << std::endl;
error = true;
}
catch(std::out_of_range)
@@ -82,17 +87,16 @@ std::size_t byteSizeParser(const std::string& argument)
}
if(!error)
{
- std::size_t suffix_size = suffixToSize(suffix[0]);
- if (suffix_size)
+ std::size_t suffix_size = 1;
+ if(suffix_index <= suffix.length())
{
- stream_size *= suffix_size;
+ suffix_size = suffixToSize(suffix[0]);
+
}
+ stream_size *= suffix_size;
}
if(error)
{
- std::cerr << "Stream size should be in <number>[suffix] format ";
- std::cerr << "where [suffix] is k, M, or G." << std::endl;
- std::cerr << "Example: 10M which is 10 * 1024 * 1024 bytes" << std::endl;
return 0;
}
return stream_size;