X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fcheck_swap.c;h=aeeb9ba0a8872044e55dc1064a91f00c38cbac0e;hb=9d878eab82bede19e80b4aa9ce1409da3ba6d658;hp=fe9254d299112094db4d7833c613a6058dae8b5a;hpb=d92fac77cc0fa23d04128d587b562c26732c4149;p=nagiosplug.git diff --git a/plugins/check_swap.c b/plugins/check_swap.c index fe9254d..aeeb9ba 100644 --- a/plugins/check_swap.c +++ b/plugins/check_swap.c @@ -42,8 +42,8 @@ void print_help (void); int warn_percent = 0; int crit_percent = 0; -float warn_size = 0; -float crit_size = 0; +double warn_size = 0; +double crit_size = 0; int verbose; int allswaps; @@ -55,7 +55,6 @@ main (int argc, char **argv) float dsktotal = 0, dskused = 0, dskfree = 0, tmp = 0; int result = STATE_UNKNOWN; char input_buffer[MAX_INPUT_BUFFER]; - char *perf; #ifdef HAVE_PROC_MEMINFO FILE *fp; #else @@ -86,7 +85,6 @@ main (int argc, char **argv) textdomain (PACKAGE); status = strdup (""); - perf = strdup (""); if (process_arguments (argc, argv) == ERROR) usage4 (_("Could not parse arguments")); @@ -310,7 +308,13 @@ main (int argc, char **argv) # endif /* HAVE_SWAP */ #endif /* HAVE_PROC_MEMINFO */ - percent_used = 100 * ((double) used_swap) / ((double) total_swap); + /* if total_swap == 0, let's not divide by 0 */ + if(total_swap) { + percent_used = 100 * ((double) used_swap) / ((double) total_swap); + } else { + percent_used = 0; + } + result = max_state (result, check_swap (percent_used, free_swap)); printf (_("SWAP %s - %d%% free (%.0f MB out of %.0f MB) %s|"), state_text (result), @@ -376,12 +380,13 @@ process_arguments (int argc, char **argv) switch (c) { case 'w': /* warning size threshold */ if (is_intnonneg (optarg)) { - warn_size = (float) atoi (optarg); + warn_size = (double) atoi (optarg); break; } else if (strstr (optarg, ",") && strstr (optarg, "%") && - sscanf (optarg, "%.0f,%d%%", &warn_size, &warn_percent) == 2) { + sscanf (optarg, "%g,%d%%", &warn_size, &warn_percent) == 2) { + warn_size = floor(warn_size); break; } else if (strstr (optarg, "%") && @@ -393,12 +398,13 @@ process_arguments (int argc, char **argv) } case 'c': /* critical size threshold */ if (is_intnonneg (optarg)) { - crit_size = (float) atoi (optarg); + crit_size = (double) atoi (optarg); break; } else if (strstr (optarg, ",") && strstr (optarg, "%") && - sscanf (optarg, "%.0f,%d%%", &crit_size, &crit_percent) == 2) { + sscanf (optarg, "%g,%d%%", &crit_size, &crit_percent) == 2) { + crit_size = floor(crit_size); break; } else if (strstr (optarg, "%") && @@ -439,12 +445,12 @@ process_arguments (int argc, char **argv) if (c == argc) return validate_arguments (); if (warn_size == 0 && is_intnonneg (argv[c])) - warn_size = (float) atoi (argv[c++]); + warn_size = (double) atoi (argv[c++]); if (c == argc) return validate_arguments (); if (crit_size == 0 && is_intnonneg (argv[c])) - crit_size = atoi (argv[c++]); + crit_size = (double) atoi (argv[c++]); return validate_arguments (); } @@ -498,10 +504,6 @@ print_help (void) -v, --verbose\n\ Verbose output. Up to 3 levels\n")); - printf (_("\n\ -On Solaris, if -a specified, uses swap -l, otherwise uses swap -s.\n\ -Will be discrepencies because swap -s counts allocated swap and includes\n\ -real memory\n")); printf (_("\n\ On AIX, if -a is specified, uses lsps -a, otherwise uses lsps -s.\n"));