From 160a7716c5a25d530853557b93a7567b7c9123af Mon Sep 17 00:00:00 2001 From: Michael Insel Date: Thu, 29 Nov 2018 22:03:26 +0100 Subject: [PATCH] Fix state conditions in check_memory and check_swap This fixes the state conditions in check_memory and check_swap. This turns the if/else if/else statements in simple if statements, since they won't work properly when both thresholds are broken. This also implements a new function to get a given state as wstring. --- plugins/check_memory.cpp | 15 ++++++--------- plugins/check_swap.cpp | 13 +++++-------- plugins/thresholds.cpp | 9 +++++++++ plugins/thresholds.hpp | 2 ++ 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/plugins/check_memory.cpp b/plugins/check_memory.cpp index e8cb8aae9..4b71517a4 100644 --- a/plugins/check_memory.cpp +++ b/plugins/check_memory.cpp @@ -164,7 +164,7 @@ static int printOutput(printInfoStruct& printInfo) if (l_Debug) std::wcout << L"Constructing output string" << '\n'; - state state; + state state = OK; std::wcout << L"MEMORY "; @@ -175,16 +175,13 @@ static int printOutput(printInfoStruct& printInfo) else currentValue = printInfo.tRam - printInfo.aRam; - if (printInfo.warn.rend(currentValue, printInfo.tRam)) { + if (printInfo.warn.rend(currentValue, printInfo.tRam)) state = WARNING; - std::wcout << L"WARNING"; - } else if (printInfo.crit.rend(currentValue, printInfo.tRam)) { + + if (printInfo.crit.rend(currentValue, printInfo.tRam)) state = CRITICAL; - std::wcout << L"CRITICAL"; - } else { - state = OK; - std::wcout << L"OK"; - } + + std::wcout << stateToString(state); if (!printInfo.showUsed) std::wcout << " - " << printInfo.percentFree << L"% free"; diff --git a/plugins/check_swap.cpp b/plugins/check_swap.cpp index 7f6db013a..906a1017d 100644 --- a/plugins/check_swap.cpp +++ b/plugins/check_swap.cpp @@ -194,16 +194,13 @@ static int printOutput(printInfoStruct& printInfo) else currentValue = printInfo.tSwap - printInfo.aSwap; - if (printInfo.warn.rend(currentValue, printInfo.tSwap)) { + if (printInfo.warn.rend(currentValue, printInfo.tSwap)) state = WARNING; - std::wcout << L"WARNING - "; - } else if (printInfo.crit.rend(currentValue, printInfo.tSwap)) { + + if (printInfo.crit.rend(currentValue, printInfo.tSwap)) state = CRITICAL; - std::wcout << L"CRITICAL - "; - } else { - state = OK; - std::wcout << L"OK - "; - } + + std::wcout << stateToString(state) << " "; if (!printInfo.showUsed) std::wcout << printInfo.percentFree << L"% free "; diff --git a/plugins/thresholds.cpp b/plugins/thresholds.cpp index f32e6d360..acc2bcafb 100644 --- a/plugins/thresholds.cpp +++ b/plugins/thresholds.cpp @@ -281,4 +281,13 @@ std::wstring formatErrorInfo(unsigned long err) { } return out.str(); +} + +std::wstring stateToString(const state& state) { + switch (state) { + case OK: return L"OK"; + case WARNING: return L"WARNING"; + case CRITICAL: return L"CRITICAL"; + default: return L"UNKNOWN"; + } } \ No newline at end of file diff --git a/plugins/thresholds.hpp b/plugins/thresholds.hpp index 8348306f2..e7d77f745 100644 --- a/plugins/thresholds.hpp +++ b/plugins/thresholds.hpp @@ -76,4 +76,6 @@ std::wstring TunitStr(const Tunit&); void printErrorInfo(unsigned long err = 0); std::wstring formatErrorInfo(unsigned long err); +std::wstring stateToString(const state&); + #endif /* THRESHOLDS_H */ -- 2.40.0