X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Futils.c;h=c8f3a00dd4c8cd297cfed5fba4532f1cb3811c2e;hb=b336798e4c1c2fab5e4396e45af6f07ddae647f1;hp=460ff824a1fa7acae0426e412489abbf4265b704;hpb=d19edd4043c498626fe68308005947975ef0a697;p=nagiosplug.git diff --git a/plugins/utils.c b/plugins/utils.c index 460ff82..c8f3a00 100644 --- a/plugins/utils.c +++ b/plugins/utils.c @@ -1,20 +1,36 @@ /***************************************************************************** - * - * utils.c - * - * Library of useful functions for plugins - * - * Copyright (c) 2000 Karl DeBisschop (karl@debisschop.net) - * License: GPL - * - * $Revision$ - * $Date$ - ****************************************************************************/ +* +* Library of useful functions for plugins +* +* License: GPL +* Copyright (c) 2000 Karl DeBisschop (karl@debisschop.net) +* Copyright (c) 2002-2007 Nagios Plugin Development Team +* +* Last Modified: $Date$ +* +* +* 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 3 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, see . +* +* $Id$ +* +*****************************************************************************/ #define LOCAL_TIMEOUT_ALARM_HANDLER #include "common.h" #include "utils.h" +#include "utils_base.h" #include #include @@ -51,16 +67,54 @@ max_state (int a, int b) return max (a, b); } +/* ************************************************************************** + * max_state_alt(STATE_x, STATE_y) + * compares STATE_x to STATE_y and returns result based on the following + * STATE_OK < STATE_DEPENDENT < STATE_UNKNOWN < STATE_WARNING < STATE_CRITICAL + * + * The main difference between max_state_alt and max_state it that it doesn't + * allow setting a default to UNKNOWN. It will instead prioritixe any valid + * non-OK state. + ****************************************************************************/ + +int +max_state_alt (int a, int b) +{ + if (a == STATE_CRITICAL || b == STATE_CRITICAL) + return STATE_CRITICAL; + else if (a == STATE_WARNING || b == STATE_WARNING) + return STATE_WARNING; + else if (a == STATE_UNKNOWN || b == STATE_UNKNOWN) + return STATE_UNKNOWN; + else if (a == STATE_DEPENDENT || b == STATE_DEPENDENT) + return STATE_DEPENDENT; + else if (a == STATE_OK || b == STATE_OK) + return STATE_OK; + else + return max (a, b); +} + void usage (const char *msg) { - printf ("%s", msg); + printf ("%s\n", msg); print_usage (); exit (STATE_UNKNOWN); } +void usage_va (const char *fmt, ...) +{ + va_list ap; + printf("%s: ", progname); + va_start(ap, fmt); + vprintf(fmt, ap); + va_end(ap); + printf("\n"); + exit (STATE_UNKNOWN); +} + void usage2(const char *msg, const char *arg) { - printf ("%s: %s - %s\n",progname,msg,arg); + printf ("%s: %s - %s\n", progname, msg, arg?arg:"(null)" ); print_usage (); exit (STATE_UNKNOWN); } @@ -73,25 +127,30 @@ usage3 (const char *msg, int arg) exit (STATE_UNKNOWN); } - void -support (void) +usage4 (const char *msg) { - printf (_("\n\ -Send email to nagios-users@lists.sourceforge.net if you have questions\n\ -regarding use of this software. To submit patches or suggest improvements,\n\ -send email to nagiosplug-devel@lists.sourceforge.net\n")); + printf ("%s: %s\n", progname, msg); + print_usage(); + exit (STATE_UNKNOWN); } +void +usage5 (void) +{ + print_usage(); + exit (STATE_UNKNOWN); +} char * clean_revstring (const char *revstring) { char plugin_revision[STRLEN]; - if (sscanf (revstring,"$Revision: %[0-9.]",plugin_revision) == 1) + plugin_revision[0] = 'v'; + if (sscanf (revstring,"$Revision: %[0-9.]", plugin_revision + 1) == 1) return strscpy (NULL, plugin_revision); else - return strscpy (NULL, "N/A"); + return strscpy (NULL, "N/A"); } void @@ -99,15 +158,8 @@ print_revision (const char *command_name, const char *revision_string) { char plugin_revision[STRLEN]; - if (sscanf (revision_string, "$Revision: %[0-9.]", plugin_revision) != 1) - strncpy (plugin_revision, "N/A", STRLEN); - printf ("%s (%s %s) %s\n", - command_name, PACKAGE, VERSION, plugin_revision); - printf (_("\ -The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\n\ -copies of the plugins under the terms of the GNU General Public License.\n\ -For more information about these matters, see the file named COPYING.\n")); - + printf ("%s %s (%s %s)\n", + command_name, clean_revstring(revision_string), PACKAGE, VERSION); } const char * @@ -127,21 +179,11 @@ state_text (int result) } } -void -die (int result, const char *fmt, ...) -{ - va_list ap; - va_start (ap, fmt); - vprintf (fmt, ap); - va_end (ap); - exit (result); -} - void timeout_alarm_handler (int signo) { if (signo == SIGALRM) { - printf ("CRITICAL - Plugin timed out after %d seconds\n", + printf (_("CRITICAL - Plugin timed out after %d seconds\n"), timeout_interval); exit (STATE_CRITICAL); } @@ -262,8 +304,6 @@ is_option (char *str) return FALSE; } - - #ifdef NEED_GETTIMEOFDAY int gettimeofday (struct timeval *tv, struct timezone *tz) @@ -438,7 +478,7 @@ strpcpy (char *dest, const char *src, const char *str) if (dest == NULL || strlen (dest) < len) dest = realloc (dest, len + 1); if (dest == NULL) - die (STATE_UNKNOWN, "failed realloc in strpcpy\n"); + die (STATE_UNKNOWN, _("failed realloc in strpcpy\n")); strncpy (dest, src, len); dest[len] = '\0'; @@ -480,7 +520,7 @@ strpcat (char *dest, const char *src, const char *str) dest = realloc (dest, len + l2 + 1); if (dest == NULL) - die (STATE_UNKNOWN, "failed malloc in strscat\n"); + die (STATE_UNKNOWN, _("failed malloc in strscat\n")); strncpy (dest + len, src, l2); dest[len + l2] = '\0'; @@ -488,7 +528,6 @@ strpcat (char *dest, const char *src, const char *str) return dest; } - /****************************************************************************** * * Print perfdata in a standard format