X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fcheck_swap.c;h=5645779d622fa325bb2eae368af413e138686379;hb=782bc207d5697f539beb1fd3359ce81d22e26a54;hp=968779dc37d633f628d42643ddb5680740bffc46;hpb=4b2e85d372262652cbd2cd37a701e7abddb3fa00;p=nagiosplug.git diff --git a/plugins/check_swap.c b/plugins/check_swap.c index 968779d..5645779 100644 --- a/plugins/check_swap.c +++ b/plugins/check_swap.c @@ -29,7 +29,7 @@ #include "popen.h" #include "utils.h" -#define PROGNAME "check_swap" +const char *progname = "check_swap"; #define REVISION "$Revision$" #define COPYRIGHT "2000-2002" #define AUTHOR "Karl DeBisschop" @@ -43,16 +43,17 @@ void print_help (void); int warn_percent = 200; int crit_percent = 200; -int warn_size = -1; -int crit_size = -1; +long unsigned int warn_size = 0; +long unsigned int crit_size = 0; int verbose; int allswaps; int main (int argc, char **argv) { - int total_swap = 0, used_swap = 0, free_swap = 0, percent_used; - int total, used, free, percent; + int percent_used, percent; + long unsigned int total_swap = 0, used_swap = 0, free_swap = 0; + long unsigned int total, used, free; int result = STATE_OK; char input_buffer[MAX_INPUT_BUFFER]; #ifdef HAVE_SWAP @@ -71,28 +72,28 @@ main (int argc, char **argv) fp = fopen (PROC_MEMINFO, "r"); asprintf (&status, "%s", "Swap used:"); while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) { - if (sscanf (input_buffer, " %s %d %d %d", str, &total, &used, &free) == 4 && + if (sscanf (input_buffer, " %s %lu %lu %lu", str, &total, &used, &free) == 4 && strstr (str, "Swap")) { total_swap += total; used_swap += used; free_swap += free; if (allswaps) { - percent = 100 * (((float) used) / ((float) total)); + percent = 100 * (((double) used) / ((double) total)); if (percent >= crit_percent || free <= crit_size) result = max_state (STATE_CRITICAL, result); else if (percent >= warn_percent || free <= warn_size) result = max_state (STATE_WARNING, result); if (verbose) - asprintf (&status, "%s [%d/%d]", status, used, total); + asprintf (&status, "%s [%lu/%lu]", status, used, total); } } } - percent_used = 100 * (((float) used_swap) / ((float) total_swap)); + percent_used = 100 * (((double) used_swap) / ((double) total_swap)); if (percent_used >= crit_percent || free_swap <= crit_size) result = max_state (STATE_CRITICAL, result); else if (percent_used >= warn_percent || free_swap <= warn_size) result = max_state (STATE_WARNING, result); - asprintf (&status, "%s %2d%% (%d out of %d)", status, percent_used, + asprintf (&status, "%s %2d%% (%lu out of %lu)", status, percent_used, used_swap, total_swap); fclose (fp); #else @@ -131,22 +132,22 @@ main (int argc, char **argv) used_swap += used; free_swap += free; if (allswaps) { - percent = 100 * (((float) used) / ((float) total)); + percent = 100 * (((double) used) / ((double) total)); if (percent >= crit_percent || free <= crit_size) result = max_state (STATE_CRITICAL, result); else if (percent >= warn_percent || free <= warn_size) result = max_state (STATE_WARNING, result); if (verbose) - asprintf (&status, "%s [%d/%d]", status, used, total); + asprintf (&status, "%s [%lu/%lu]", status, used, total); } } - percent_used = 100 * ((float) used_swap) / ((float) total_swap); - asprintf (&status, "%s %2d%% (%d out of %d)", - status, percent_used, used_swap, total_swap); + percent_used = 100 * ((double) used_swap) / ((double) total_swap); if (percent_used >= crit_percent || free_swap <= crit_size) result = max_state (STATE_CRITICAL, result); else if (percent_used >= warn_percent || free_swap <= warn_size) result = max_state (STATE_WARNING, result); + asprintf (&status, "%s %2d%% (%lu out of %lu)", + status, percent_used, used_swap, total_swap); /* If we get anything on STDERR, at least set warning */ while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) @@ -202,7 +203,7 @@ process_arguments (int argc, char **argv) static struct option long_options[] = { {"warning", required_argument, 0, 'w'}, {"critical", required_argument, 0, 'c'}, - {"all", no_argument, 0, 'a'}, + {"allswaps", no_argument, 0, 'a'}, {"verbose", no_argument, 0, 'v'}, {"version", no_argument, 0, 'V'}, {"help", no_argument, 0, 'h'}, @@ -231,7 +232,7 @@ process_arguments (int argc, char **argv) } else if (strstr (optarg, ",") && strstr (optarg, "%") && - sscanf (optarg, "%d,%d%%", &warn_size, &warn_percent) == 2) { + sscanf (optarg, "%lu,%d%%", &warn_size, &warn_percent) == 2) { break; } else if (strstr (optarg, "%") && @@ -249,7 +250,7 @@ process_arguments (int argc, char **argv) } else if (strstr (optarg, ",") && strstr (optarg, "%") && - sscanf (optarg, "%d,%d%%", &crit_size, &crit_percent) == 2) { + sscanf (optarg, "%lu,%d%%", &crit_size, &crit_percent) == 2) { break; } else if (strstr (optarg, "%") && @@ -267,7 +268,7 @@ process_arguments (int argc, char **argv) verbose = TRUE; break; case 'V': /* version */ - print_revision (my_basename (argv[0]), "$Revision$"); + print_revision (progname, "$Revision$"); exit (STATE_OK); case 'h': /* help */ print_help (); @@ -336,7 +337,7 @@ print_usage (void) " %s [-a] -w -c \n" " %s (-h | --help) for detailed help\n" " %s (-V | --version) for version information\n", - PROGNAME, PROGNAME, PROGNAME, PROGNAME); + progname, progname, progname, progname); } @@ -346,7 +347,7 @@ print_usage (void) void print_help (void) { - print_revision (PROGNAME, REVISION); + print_revision (progname, REVISION); printf ("Copyright (c) %s %s <%s>\n\n%s\n", COPYRIGHT, AUTHOR, EMAIL, SUMMARY); print_usage ();