-/******************************************************************************
- * Icinga 2 *
- * Copyright (C) 2012-2018 Icinga Development Team (https://www.icinga.com/) *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software Foundation *
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
- ******************************************************************************/
+/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
#include "plugins/thresholds.hpp"
#include <boost/program_options.hpp>
static bool l_Debug;
-BOOL EnumPageFilesProc(LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCTSTR lpFilename) {
+BOOL EnumPageFilesProc(LPVOID pContext, PENUM_PAGE_FILE_INFORMATION pPageFileInfo, LPCWSTR lpFilename) {
std::vector<pageFileInfo>* pageFile = static_cast<std::vector<pageFileInfo>*>(pContext);
SYSTEM_INFO systemInfo;
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 ";
static int check_swap(printInfoStruct& printInfo)
{
- PENUM_PAGE_FILE_CALLBACK pageFileCallback = &EnumPageFilesProc;
+ // Needs explicit cast: http://msinilo.pl/blog2/post/p1348/
+ PENUM_PAGE_FILE_CALLBACKW pageFileCallback = (PENUM_PAGE_FILE_CALLBACKW)EnumPageFilesProc;
std::vector<pageFileInfo> pageFiles;
- if(!EnumPageFiles(pageFileCallback, &pageFiles)) {
+ if(!EnumPageFilesW(pageFileCallback, &pageFiles)) {
printErrorInfo();
return 3;
}
printInfo.aSwap += round(pageFiles.at(i).availableSpwap / pow(1024.0, printInfo.unit));
}
- printInfo.percentFree = 100.0 * printInfo.aSwap / printInfo.tSwap;
+ if (printInfo.aSwap > 0 && printInfo.tSwap > 0)
+ printInfo.percentFree = 100.0 * printInfo.aSwap / printInfo.tSwap;
+ else
+ printInfo.percentFree = 0;
return -1;
}