From 0eda59afa1c95f2e11ae52925169a7c11bb6e352 Mon Sep 17 00:00:00 2001 From: Karl DeBisschop Date: Sat, 28 Feb 2004 04:54:32 +0000 Subject: update to work with Linux 2.6 /proc/meminfo format git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@827 f882894a-f735-0410-b71e-b25c423dba1c diff --git a/plugins/check_swap.c b/plugins/check_swap.c index 02b043e..fe792e8 100644 --- a/plugins/check_swap.c +++ b/plugins/check_swap.c @@ -52,7 +52,7 @@ main (int argc, char **argv) { int percent_used, percent; unsigned long long total_swap = 0, used_swap = 0, free_swap = 0; - unsigned long long dsktotal, dskused, dskfree; + unsigned long long dsktotal, dskused, dskfree, tmp; int result = STATE_OK; char input_buffer[MAX_INPUT_BUFFER]; char *perf; @@ -82,8 +82,7 @@ main (int argc, char **argv) #ifdef HAVE_PROC_MEMINFO fp = fopen (PROC_MEMINFO, "r"); while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) { - if (sscanf (input_buffer, " %s %llu %llu %llu", str, &dsktotal, &dskused, &dskfree) == 4 && - strstr (str, "Swap")) { + if (sscanf (input_buffer, "%*[S]%*[w]%*[a]%*[p]%*[:] %llu %llu %llu", &dsktotal, &dskused, &dskfree) == 3) { dsktotal = dsktotal / 1048576; dskused = dskused / 1048576; dskfree = dskfree / 1048576; @@ -97,8 +96,20 @@ main (int argc, char **argv) asprintf (&status, "%s [%llu (%d%%)]", status, dskfree, 100 - percent); } } + else if (sscanf (input_buffer, "%*[S]%*[w]%*[a]%*[p]%[TotalFre]%*[:] %llu %*[k]%*[B]", str, &tmp)) { + if (strcmp ("Total", str) == 0) { + dsktotal = tmp / 1024; + } + else if (strcmp ("Free", str) == 0) { + dskfree = tmp / 1024; + } + } } fclose(fp); + dskused = dsktotal - dskfree; + total_swap = dsktotal; + used_swap = dskused; + free_swap = dskfree; #else # ifdef HAVE_SWAP asprintf(&swap_command, "%s", SWAP_COMMAND); -- cgit v0.10-9-g596f