diff options
| -rw-r--r-- | plugins/check_disk.c | 23 | ||||
| -rw-r--r-- | plugins/check_dummy.c | 128 | ||||
| -rw-r--r-- | plugins/popen.c | 41 | ||||
| -rw-r--r-- | plugins/utils.c | 2 | ||||
| -rw-r--r-- | plugins/utils.h | 2 |
5 files changed, 94 insertions, 102 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c index bd060218..7974d141 100644 --- a/plugins/check_disk.c +++ b/plugins/check_disk.c | |||
| @@ -109,7 +109,7 @@ enum | |||
| 109 | #endif | 109 | #endif |
| 110 | 110 | ||
| 111 | int process_arguments (int, char **); | 111 | int process_arguments (int, char **); |
| 112 | void print_path (char *mypath); | 112 | void print_path (const char *mypath); |
| 113 | int validate_arguments (uintmax_t, uintmax_t, double, double, char *); | 113 | int validate_arguments (uintmax_t, uintmax_t, double, double, char *); |
| 114 | int check_disk (double usp, uintmax_t free_disk); | 114 | int check_disk (double usp, uintmax_t free_disk); |
| 115 | int walk_name_list (struct name_list *list, const char *name); | 115 | int walk_name_list (struct name_list *list, const char *name); |
| @@ -216,7 +216,7 @@ main (int argc, char **argv) | |||
| 216 | temp_list = temp_list->name_next; | 216 | temp_list = temp_list->name_next; |
| 217 | } | 217 | } |
| 218 | 218 | ||
| 219 | die (result, "DISK %s%s\n", state_text (result), output, details); | 219 | die (result, "DISK %s%s%s\n", state_text (result), output, details); |
| 220 | return STATE_UNKNOWN; | 220 | return STATE_UNKNOWN; |
| 221 | } | 221 | } |
| 222 | 222 | ||
| @@ -453,11 +453,15 @@ process_arguments (int argc, char **argv) | |||
| 453 | } | 453 | } |
| 454 | 454 | ||
| 455 | 455 | ||
| 456 | void print_path (char *mypath) | 456 | void |
| 457 | print_path (const char *mypath) | ||
| 457 | { | 458 | { |
| 458 | if (mypath) | 459 | if (mypath == NULL) |
| 459 | printf (" for %s", mypath); | 460 | printf ("\n"); |
| 460 | printf ("\n"); | 461 | else |
| 462 | printf (" for %s\n", mypath); | ||
| 463 | |||
| 464 | return; | ||
| 461 | } | 465 | } |
| 462 | 466 | ||
| 463 | int | 467 | int |
| @@ -473,14 +477,14 @@ validate_arguments (uintmax_t w, uintmax_t c, double wp, double cp, char *mypath | |||
| 473 | printf (_("\ | 477 | printf (_("\ |
| 474 | INPUT ERROR: C_DFP (%f) should be less than W_DFP (%.1f) and both should be between zero and 100 percent, inclusive"), | 478 | INPUT ERROR: C_DFP (%f) should be less than W_DFP (%.1f) and both should be between zero and 100 percent, inclusive"), |
| 475 | cp, wp); | 479 | cp, wp); |
| 476 | print_path (path); | 480 | print_path (mypath); |
| 477 | return ERROR; | 481 | return ERROR; |
| 478 | } | 482 | } |
| 479 | else if ((w > 0 || c > 0) && (w == 0 || c == 0 || c > w)) { | 483 | else if ((w > 0 || c > 0) && (w == 0 || c == 0 || c > w)) { |
| 480 | printf (_("\ | 484 | printf (_("\ |
| 481 | INPUT ERROR: C_DF (%lu) should be less than W_DF (%lu) and both should be greater than zero"), | 485 | INPUT ERROR: C_DF (%lu) should be less than W_DF (%lu) and both should be greater than zero"), |
| 482 | (unsigned long)c, (unsigned long)w); | 486 | (unsigned long)c, (unsigned long)w); |
| 483 | print_path (path); | 487 | print_path (mypath); |
| 484 | return ERROR; | 488 | return ERROR; |
| 485 | } | 489 | } |
| 486 | 490 | ||
| @@ -542,6 +546,7 @@ print_help (void) | |||
| 542 | { | 546 | { |
| 543 | print_revision (progname, revision); | 547 | print_revision (progname, revision); |
| 544 | 548 | ||
| 549 | printf (_("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n")); | ||
| 545 | printf (_(COPYRIGHT), copyright, email); | 550 | printf (_(COPYRIGHT), copyright, email); |
| 546 | 551 | ||
| 547 | printf (_("\ | 552 | printf (_("\ |
| @@ -596,7 +601,7 @@ and generates an alert if free space is less than one of the threshold values.") | |||
| 596 | check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /\n\ | 601 | check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /\n\ |
| 597 | Checks /tmp and /var at 10%,5% and / at 100MB, 50MB\n")); | 602 | Checks /tmp and /var at 10%,5% and / at 100MB, 50MB\n")); |
| 598 | 603 | ||
| 599 | support (); | 604 | printf (_(UT_SUPPORT)); |
| 600 | } | 605 | } |
| 601 | 606 | ||
| 602 | 607 | ||
diff --git a/plugins/check_dummy.c b/plugins/check_dummy.c index d90b1409..3db5238f 100644 --- a/plugins/check_dummy.c +++ b/plugins/check_dummy.c | |||
| @@ -1,39 +1,21 @@ | |||
| 1 | /************************************************************* | 1 | /****************************************************************************** |
| 2 | * | 2 | |
| 3 | * CHECK_DUMMY.C | 3 | This program is free software; you can redistribute it and/or modify |
| 4 | * | 4 | it under the terms of the GNU General Public License as published by |
| 5 | * Program: Dummy plugin for Nagios | 5 | the Free Software Foundation; either version 2 of the License, or |
| 6 | * License: GPL | 6 | (at your option) any later version. |
| 7 | * Copyright (c) 1999 Ethan Galstad (nagios@nagios.org) | 7 | |
| 8 | * | 8 | This program is distributed in the hope that it will be useful, |
| 9 | * Last Modified: $Date$ | 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 | * | 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 11 | * Command line: CHECK_DUMMY <state> | 11 | GNU General Public License for more details. |
| 12 | * | 12 | |
| 13 | * Description: | 13 | You should have received a copy of the GNU General Public License |
| 14 | * | 14 | along with this program; if not, write to the Free Software |
| 15 | * This plugin will simply return the state corresponding to the | 15 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 16 | * numerical value of the <state> argument. | 16 | |
| 17 | * | 17 | ******************************************************************************/ |
| 18 | * License Information: | 18 | |
| 19 | * | ||
| 20 | * This program is free software; you can redistribute it and/or modify | ||
| 21 | * it under the terms of the GNU General Public License as published by | ||
| 22 | * the Free Software Foundation; either version 2 of the License, or | ||
| 23 | * (at your option) any later version. | ||
| 24 | * | ||
| 25 | * This program is distributed in the hope that it will be useful, | ||
| 26 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 27 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 28 | * GNU General Public License for more details. | ||
| 29 | * | ||
| 30 | * You should have received a copy of the GNU General Public License | ||
| 31 | * along with this program; if not, write to the Free Software | ||
| 32 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 33 | * | ||
| 34 | **************************************************************/ | ||
| 35 | |||
| 36 | #include "config.h" | ||
| 37 | #include "common.h" | 19 | #include "common.h" |
| 38 | #include "utils.h" | 20 | #include "utils.h" |
| 39 | 21 | ||
| @@ -42,39 +24,18 @@ const char *revision = "$Revision$"; | |||
| 42 | const char *copyright = "1999-2003"; | 24 | const char *copyright = "1999-2003"; |
| 43 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; | 25 | const char *email = "nagiosplug-devel@lists.sourceforge.net"; |
| 44 | 26 | ||
| 45 | void | 27 | void print_help (void); |
| 46 | print_usage (void) | 28 | void print_usage (void); |
| 47 | { | ||
| 48 | printf (_("Usage: %s <integer state>\n"), progname); | ||
| 49 | } | ||
| 50 | 29 | ||
| 51 | void | ||
| 52 | print_help (void) | ||
| 53 | { | ||
| 54 | print_revision (progname, revision); | ||
| 55 | 30 | ||
| 56 | printf (_(COPYRIGHT), copyright, email); | ||
| 57 | |||
| 58 | print_usage (); | ||
| 59 | |||
| 60 | printf (_(UT_HELP_VRSN)); | ||
| 61 | |||
| 62 | printf (_("\n\ | ||
| 63 | This plugin will simply return the state corresponding to the numeric value\n\ | ||
| 64 | of the <state> argument.\n")); | ||
| 65 | |||
| 66 | support (); | ||
| 67 | } | ||
| 68 | 31 | ||
| 69 | int | 32 | int |
| 70 | main (int argc, char **argv) | 33 | main (int argc, char **argv) |
| 71 | { | 34 | { |
| 72 | int result; | 35 | int result; |
| 73 | 36 | ||
| 74 | if (argc != 2) { | 37 | if (argc != 2) |
| 75 | printf (_("Incorrect number of arguments supplied\n")); | 38 | usage (_("Incorrect number of arguments supplied\n")); |
| 76 | exit (STATE_UNKNOWN); | ||
| 77 | } | ||
| 78 | else if (strcmp (argv[1], "-V") == 0 || strcmp (argv[1], "--version") == 0) { | 39 | else if (strcmp (argv[1], "-V") == 0 || strcmp (argv[1], "--version") == 0) { |
| 79 | print_revision (progname, revision); | 40 | print_revision (progname, revision); |
| 80 | exit (STATE_OK); | 41 | exit (STATE_OK); |
| @@ -83,11 +44,10 @@ main (int argc, char **argv) | |||
| 83 | print_help (); | 44 | print_help (); |
| 84 | exit (STATE_OK); | 45 | exit (STATE_OK); |
| 85 | } | 46 | } |
| 86 | else if (!is_integer (argv[1])) { | 47 | else if (!is_integer (argv[1])) |
| 87 | print_usage (); | 48 | usage (_("Arguments to check_dummy must be an integer\n")); |
| 88 | exit (STATE_UNKNOWN); | 49 | else |
| 89 | } | 50 | result = atoi (argv[1]); |
| 90 | result = atoi (argv[1]); | ||
| 91 | 51 | ||
| 92 | switch (result) { | 52 | switch (result) { |
| 93 | case STATE_OK: | 53 | case STATE_OK: |
| @@ -99,10 +59,42 @@ main (int argc, char **argv) | |||
| 99 | case STATE_CRITICAL: | 59 | case STATE_CRITICAL: |
| 100 | printf ("Status is CRITICAL\n"); | 60 | printf ("Status is CRITICAL\n"); |
| 101 | break; | 61 | break; |
| 102 | default: | 62 | case STATE_UNKNOWN: |
| 103 | printf ("Status is UNKNOWN\n"); | 63 | printf ("Status is UNKNOWN\n"); |
| 104 | result = STATE_UNKNOWN; | 64 | break; |
| 65 | default: | ||
| 66 | printf ("Status %d is not a supported error state\n", result); | ||
| 67 | break; | ||
| 105 | } | 68 | } |
| 106 | 69 | ||
| 107 | return result; | 70 | return result; |
| 108 | } | 71 | } |
| 72 | |||
| 73 | |||
| 74 | |||
| 75 | void | ||
| 76 | print_help (void) | ||
| 77 | { | ||
| 78 | print_revision (progname, revision); | ||
| 79 | |||
| 80 | printf (_("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n")); | ||
| 81 | printf (_(COPYRIGHT), copyright, email); | ||
| 82 | |||
| 83 | print_usage (); | ||
| 84 | |||
| 85 | printf (_(UT_HELP_VRSN)); | ||
| 86 | |||
| 87 | printf (_("\n\ | ||
| 88 | This plugin will simply return the state corresponding to the numeric value\n\ | ||
| 89 | of the <state> argument.\n")); | ||
| 90 | |||
| 91 | printf (_(UT_SUPPORT)); | ||
| 92 | } | ||
| 93 | |||
| 94 | |||
| 95 | |||
| 96 | void | ||
| 97 | print_usage (void) | ||
| 98 | { | ||
| 99 | printf (_("Usage: %s <integer state>\n"), progname); | ||
| 100 | } | ||
diff --git a/plugins/popen.c b/plugins/popen.c index fb855d7b..98ba085b 100644 --- a/plugins/popen.c +++ b/plugins/popen.c | |||
| @@ -57,9 +57,11 @@ RETSIGTYPE popen_timeout_alarm_handler (int); | |||
| 57 | #define min(a,b) ((a) < (b) ? (a) : (b)) | 57 | #define min(a,b) ((a) < (b) ? (a) : (b)) |
| 58 | #define max(a,b) ((a) > (b) ? (a) : (b)) | 58 | #define max(a,b) ((a) > (b) ? (a) : (b)) |
| 59 | int open_max (void); /* {Prog openmax} */ | 59 | int open_max (void); /* {Prog openmax} */ |
| 60 | void err_sys (const char *, ...); | 60 | static void err_sys (const char *, ...) __attribute__((noreturn,format(printf, 1, 2))); |
| 61 | char *rtrim (char *, const char *); | 61 | char *rtrim (char *, const char *); |
| 62 | 62 | ||
| 63 | char *pname = NULL; /* caller can set this from argv[0] */ | ||
| 64 | |||
| 63 | /*int *childerr = NULL;*//* ptr to array allocated at run-time */ | 65 | /*int *childerr = NULL;*//* ptr to array allocated at run-time */ |
| 64 | /*extern pid_t *childpid = NULL; *//* ptr to array allocated at run-time */ | 66 | /*extern pid_t *childpid = NULL; *//* ptr to array allocated at run-time */ |
| 65 | static int maxfd; /* from our open_max(), {Prog openmax} */ | 67 | static int maxfd; /* from our open_max(), {Prog openmax} */ |
| @@ -67,7 +69,7 @@ static int maxfd; /* from our open_max(), {Prog openmax} */ | |||
| 67 | FILE * | 69 | FILE * |
| 68 | spopen (const char *cmdstring) | 70 | spopen (const char *cmdstring) |
| 69 | { | 71 | { |
| 70 | char *env[] = { "LC_ALL=C", (char*)0 }; | 72 | char *env[2]; |
| 71 | char *cmd = NULL; | 73 | char *cmd = NULL; |
| 72 | char **argv = NULL; | 74 | char **argv = NULL; |
| 73 | char *str; | 75 | char *str; |
| @@ -84,6 +86,9 @@ spopen (const char *cmdstring) | |||
| 84 | setrlimit (RLIMIT_CORE, &limit); | 86 | setrlimit (RLIMIT_CORE, &limit); |
| 85 | #endif | 87 | #endif |
| 86 | 88 | ||
| 89 | env[0] = strdup("LC_ALL=C"); | ||
| 90 | env[1] = '\0'; | ||
| 91 | |||
| 87 | /* if no command was passed, return with no error */ | 92 | /* if no command was passed, return with no error */ |
| 88 | if (cmdstring == NULL) | 93 | if (cmdstring == NULL) |
| 89 | return (NULL); | 94 | return (NULL); |
| @@ -148,13 +153,13 @@ spopen (const char *cmdstring) | |||
| 148 | 153 | ||
| 149 | if (childpid == NULL) { /* first time through */ | 154 | if (childpid == NULL) { /* first time through */ |
| 150 | maxfd = open_max (); /* allocate zeroed out array for child pids */ | 155 | maxfd = open_max (); /* allocate zeroed out array for child pids */ |
| 151 | if ((childpid = calloc (maxfd, sizeof (pid_t))) == NULL) | 156 | if ((childpid = calloc ((size_t)maxfd, sizeof (pid_t))) == NULL) |
| 152 | return (NULL); | 157 | return (NULL); |
| 153 | } | 158 | } |
| 154 | 159 | ||
| 155 | if (child_stderr_array == NULL) { /* first time through */ | 160 | if (child_stderr_array == NULL) { /* first time through */ |
| 156 | maxfd = open_max (); /* allocate zeroed out array for child pids */ | 161 | maxfd = open_max (); /* allocate zeroed out array for child pids */ |
| 157 | if ((child_stderr_array = calloc (maxfd, sizeof (int))) == NULL) | 162 | if ((child_stderr_array = calloc ((size_t)maxfd, sizeof (int))) == NULL) |
| 158 | return (NULL); | 163 | return (NULL); |
| 159 | } | 164 | } |
| 160 | 165 | ||
| @@ -259,34 +264,22 @@ open_max (void) | |||
| 259 | } | 264 | } |
| 260 | 265 | ||
| 261 | 266 | ||
| 262 | static void err_doit (int, const char *, va_list); | ||
| 263 | |||
| 264 | char *pname = NULL; /* caller can set this from argv[0] */ | ||
| 265 | 267 | ||
| 266 | /* Fatal error related to a system call. | 268 | /* Fatal error related to a system call. |
| 267 | * Print a message and die. */ | 269 | * Print a message and die. */ |
| 268 | 270 | ||
| 269 | void | ||
| 270 | err_sys (const char *fmt, ...) | ||
| 271 | { | ||
| 272 | va_list ap; | ||
| 273 | |||
| 274 | va_start (ap, fmt); | ||
| 275 | err_doit (1, fmt, ap); | ||
| 276 | va_end (ap); | ||
| 277 | exit (1); | ||
| 278 | } | ||
| 279 | |||
| 280 | /* Print a message and return to caller. | ||
| 281 | * Caller specifies "errnoflag". */ | ||
| 282 | |||
| 283 | #define MAXLINE 2048 | 271 | #define MAXLINE 2048 |
| 284 | static void | 272 | static void |
| 285 | err_doit (int errnoflag, const char *fmt, va_list ap) | 273 | err_sys (const char *fmt, ...) |
| 286 | { | 274 | { |
| 275 | int errnoflag = 1; | ||
| 287 | int errno_save; | 276 | int errno_save; |
| 288 | char buf[MAXLINE]; | 277 | char buf[MAXLINE]; |
| 289 | 278 | ||
| 279 | va_list ap; | ||
| 280 | |||
| 281 | va_start (ap, fmt); | ||
| 282 | /* err_doit (1, fmt, ap); */ | ||
| 290 | errno_save = errno; /* value caller might want printed */ | 283 | errno_save = errno; /* value caller might want printed */ |
| 291 | vsprintf (buf, fmt, ap); | 284 | vsprintf (buf, fmt, ap); |
| 292 | if (errnoflag) | 285 | if (errnoflag) |
| @@ -295,7 +288,8 @@ err_doit (int errnoflag, const char *fmt, va_list ap) | |||
| 295 | fflush (stdout); /* in case stdout and stderr are the same */ | 288 | fflush (stdout); /* in case stdout and stderr are the same */ |
| 296 | fputs (buf, stderr); | 289 | fputs (buf, stderr); |
| 297 | fflush (NULL); /* flushes all stdio output streams */ | 290 | fflush (NULL); /* flushes all stdio output streams */ |
| 298 | return; | 291 | va_end (ap); |
| 292 | exit (1); | ||
| 299 | } | 293 | } |
| 300 | 294 | ||
| 301 | char * | 295 | char * |
| @@ -313,3 +307,4 @@ rtrim (char *str, const char *tok) | |||
| 313 | } | 307 | } |
| 314 | return str; | 308 | return str; |
| 315 | } | 309 | } |
| 310 | |||
diff --git a/plugins/utils.c b/plugins/utils.c index aed03c4e..c2261dc3 100644 --- a/plugins/utils.c +++ b/plugins/utils.c | |||
| @@ -54,7 +54,7 @@ max_state (int a, int b) | |||
| 54 | 54 | ||
| 55 | void usage (char *msg) | 55 | void usage (char *msg) |
| 56 | { | 56 | { |
| 57 | printf (msg); | 57 | printf ("%s", msg); |
| 58 | print_usage (); | 58 | print_usage (); |
| 59 | exit (STATE_UNKNOWN); | 59 | exit (STATE_UNKNOWN); |
| 60 | } | 60 | } |
diff --git a/plugins/utils.h b/plugins/utils.h index a852e86a..c378e459 100644 --- a/plugins/utils.h +++ b/plugins/utils.h | |||
| @@ -16,7 +16,7 @@ suite of plugins. */ | |||
| 16 | void support (void); | 16 | void support (void); |
| 17 | char *clean_revstring (const char *revstring); | 17 | char *clean_revstring (const char *revstring); |
| 18 | void print_revision (const char *, const char *); | 18 | void print_revision (const char *, const char *); |
| 19 | void die (int result, const char *fmt, ...) __attribute__((noreturn)); | 19 | void die (int result, const char *fmt, ...) __attribute__((noreturn,format(printf, 2, 3))); |
| 20 | 20 | ||
| 21 | /* Handle timeouts */ | 21 | /* Handle timeouts */ |
| 22 | 22 | ||
