mirror of https://github.com/Icinga/icinga2.git
Improve check argument parsing
This commit is contained in:
parent
bb04f66b25
commit
f85be08480
|
@ -192,7 +192,7 @@ int parseArguments(int ac, wchar_t **av, po::variables_map& vm, printInfoStruct&
|
||||||
|
|
||||||
if (vm.count("unit")) {
|
if (vm.count("unit")) {
|
||||||
try {
|
try {
|
||||||
printInfo.unit = parseBUnit(vm["unit"].as<wstring>().c_str());
|
printInfo.unit = parseBUnit(vm["unit"].as<wstring>());
|
||||||
} catch (std::invalid_argument) {
|
} catch (std::invalid_argument) {
|
||||||
wcout << L"Unknown unit Type " << vm["unit"].as<wstring>() << endl;
|
wcout << L"Unknown unit Type " << vm["unit"].as<wstring>() << endl;
|
||||||
return 3;
|
return 3;
|
||||||
|
|
|
@ -164,7 +164,7 @@ int parseArguments(int ac, wchar_t **av, po::variables_map& vm, printInfoStruct&
|
||||||
|
|
||||||
if (vm.count("unit")) {
|
if (vm.count("unit")) {
|
||||||
try{
|
try{
|
||||||
printInfo.unit = parseTUnit(vm["unit"].as<wstring>().c_str());
|
printInfo.unit = parseTUnit(vm["unit"].as<wstring>());
|
||||||
} catch (std::invalid_argument) {
|
} catch (std::invalid_argument) {
|
||||||
|
|
||||||
} wcout << L"Unknown unit type " << vm["unit"].as<wstring>() << endl;
|
} wcout << L"Unknown unit type " << vm["unit"].as<wstring>() << endl;
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#include "boost\algorithm\string.hpp"
|
#include "boost\algorithm\string.hpp"
|
||||||
#include "boost\lexical_cast.hpp"
|
#include "boost\lexical_cast.hpp"
|
||||||
|
|
||||||
|
using namespace boost::algorithm;
|
||||||
|
|
||||||
using std::wstring;
|
using std::wstring;
|
||||||
|
|
||||||
threshold parse(const wstring& stri)
|
threshold parse(const wstring& stri)
|
||||||
|
@ -32,6 +34,9 @@ threshold parse(const wstring& stri)
|
||||||
|
|
||||||
wstring str = stri;
|
wstring str = stri;
|
||||||
|
|
||||||
|
//kill whitespace
|
||||||
|
str.erase((std::remove(str.begin(), str.end(), L" "), str.end()));
|
||||||
|
|
||||||
bool low = (str.at(0) == L'!');
|
bool low = (str.at(0) == L'!');
|
||||||
if (low)
|
if (low)
|
||||||
str = wstring(str.begin() + 1, str.end());
|
str = wstring(str.begin() + 1, str.end());
|
||||||
|
@ -74,23 +79,26 @@ threshold parse(const wstring& stri)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Bunit parseBUnit(const wchar_t *str)
|
Bunit parseBUnit(const wstring& str)
|
||||||
{
|
{
|
||||||
if (!wcscmp(str, L"B"))
|
wstring wstr = to_upper_copy(str);
|
||||||
|
|
||||||
|
if (wstr == L"B")
|
||||||
return BunitB;
|
return BunitB;
|
||||||
if (!wcscmp(str, L"kB"))
|
if (wstr == L"kB")
|
||||||
return BunitkB;
|
return BunitkB;
|
||||||
if (!wcscmp(str, L"MB"))
|
if (wstr == L"MB")
|
||||||
return BunitMB;
|
return BunitMB;
|
||||||
if (!wcscmp(str, L"GB"))
|
if (wstr == L"GB")
|
||||||
return BunitGB;
|
return BunitGB;
|
||||||
if (!wcscmp(str, L"TB"))
|
if (wstr == L"TB")
|
||||||
return BunitTB;
|
return BunitTB;
|
||||||
|
|
||||||
throw std::invalid_argument("Unknown unit type");
|
throw std::invalid_argument("Unknown unit type");
|
||||||
}
|
}
|
||||||
|
|
||||||
wstring BunitStr(const Bunit& unit) {
|
wstring BunitStr(const Bunit& unit)
|
||||||
|
{
|
||||||
switch (unit) {
|
switch (unit) {
|
||||||
case BunitB:
|
case BunitB:
|
||||||
return L"B";
|
return L"B";
|
||||||
|
@ -106,20 +114,23 @@ wstring BunitStr(const Bunit& unit) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Tunit parseTUnit(const wchar_t *str) {
|
Tunit parseTUnit(const wstring& str) {
|
||||||
if (!wcscmp(str, L"ms"))
|
wstring wstr = to_lower_copy(str);
|
||||||
|
|
||||||
|
if (wstr == L"ms")
|
||||||
return TunitMS;
|
return TunitMS;
|
||||||
if (!wcscmp(str, L"s"))
|
if (wstr == L"s")
|
||||||
return TunitS;
|
return TunitS;
|
||||||
if (!wcscmp(str, L"m"))
|
if (wstr == L"m")
|
||||||
return TunitM;
|
return TunitM;
|
||||||
if (!wcscmp(str, L"h"))
|
if (wstr == L"h")
|
||||||
return TunitH;
|
return TunitH;
|
||||||
|
|
||||||
throw std::invalid_argument("Unknown unit type");
|
throw std::invalid_argument("Unknown unit type");
|
||||||
}
|
}
|
||||||
|
|
||||||
wstring TunitStr(const Tunit& unit) {
|
wstring TunitStr(const Tunit& unit)
|
||||||
|
{
|
||||||
switch (unit) {
|
switch (unit) {
|
||||||
case TunitMS:
|
case TunitMS:
|
||||||
return L"ms";
|
return L"ms";
|
||||||
|
|
|
@ -76,8 +76,8 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
threshold parse(const std::wstring&);
|
threshold parse(const std::wstring&);
|
||||||
Bunit parseBUnit(const wchar_t *);
|
Bunit parseBUnit(const std::wstring&);
|
||||||
std::wstring BunitStr(const Bunit&);
|
std::wstring BunitStr(const Bunit&);
|
||||||
Tunit parseTUnit(const wchar_t *);
|
Tunit parseTUnit(const std::wstring&);
|
||||||
std::wstring TunitStr(const Tunit&);
|
std::wstring TunitStr(const Tunit&);
|
||||||
#endif
|
#endif
|
Loading…
Reference in New Issue