Code

check_host: Allocate a large-enough buffer for the host table.
[nagiosplug.git] / plugins / utils.h
index 35e62ab44c36be7821f1726948520f27c5300666..3c3f1892458b350a6783ce8f425e118bbec53bfd 100644 (file)
@@ -1,3 +1,5 @@
+#ifndef NP_UTILS_H
+#define NP_UTILS_H
 /* Header file for nagios plugins utils.c */
 
 /* This file should be included in all plugins */
@@ -11,19 +13,30 @@ in order to resist overflow attacks. In addition, a few functions are
 provided to standardize version and error reporting across the entire
 suite of plugins. */
 
+/* now some functions etc are being defined in ../lib/utils_base.c */
+#include "utils_base.h"
+
+#ifdef NP_EXTRA_OPTS
+/* Include extra-opts functions if compiled in */
+#include "extra_opts.h"
+#else
+/* else, fake np_extra_opts */
+#define np_extra_opts(acptr,av,pr) av
+#endif
+
 /* Standardize version information, termination */
 
 void support (void);
-char *clean_revstring (const char *revstring);
 void print_revision (const char *, const char *);
-void die (int result, const char *fmt, ...) __attribute__((noreturn,format(printf, 2, 3)));
 
 /* Handle timeouts */
 
 #ifdef LOCAL_TIMEOUT_ALARM_HANDLER
+extern unsigned int timeout_state;
 extern unsigned int timeout_interval;
 RETSIGTYPE timeout_alarm_handler (int);
 #else
+unsigned int timeout_state = STATE_CRITICAL;
 unsigned int timeout_interval = DEFAULT_SOCKET_TIMEOUT;
 extern RETSIGTYPE timeout_alarm_handler (int);
 #endif
@@ -55,7 +68,7 @@ struct timeval {
 #endif
 
 #ifndef HAVE_GETTIMEOFDAY
-int gettimeofday(struct timeval *tv, struct timezone *tz);
+int gettimeofday(struct timeval *, struct timezone *);
 #endif
 
 double delta_time (struct timeval tv);
@@ -63,46 +76,50 @@ long deltime (struct timeval tv);
 
 /* Handle strings safely */
 
-void strip (char *buffer);
-char *strscpy (char *dest, const char *src);
-char *strnl (char *str);
-char *strpcpy (char *dest, const char *src, const char *str);
-char *strpcat (char *dest, const char *src, const char *str);
+void strip (char *);
+char *strscpy (char *, const char *);
+char *strnl (char *);
+char *strpcpy (char *, const char *, const char *);
+char *strpcat (char *, const char *, const char *);
 
 int max_state (int a, int b);
+int max_state_alt (int a, int b);
 
-void usage (const char *msg) __attribute__((noreturn));
-void usage2(const char *msg, const char *arg) __attribute__((noreturn));
-void usage3(const char *msg, int arg) __attribute__((noreturn));
+void usage (const char *) __attribute__((noreturn));
+void usage2(const char *, const char *) __attribute__((noreturn));
+void usage3(const char *, int) __attribute__((noreturn));
+void usage4(const char *) __attribute__((noreturn));
+void usage5(void) __attribute__((noreturn));
+void usage_va(const char *fmt, ...) __attribute__((noreturn));
 
-const char *state_text (int result);
+const char *state_text (int);
 
 #define max(a,b) (((a)>(b))?(a):(b))
 #define min(a,b) (((a)<(b))?(a):(b))
 
-char *perfdata (const char *label,
- long int val,
- const char *uom,
- int warnp,
- long int warn,
- int critp,
- long int crit,
- int minp,
- long int minv,
- int maxp,
- long int maxv);
-
-char *fperfdata (const char *label,
- double val,
- const char *uom,
- int warnp,
- double warn,
- int critp,
- double crit,
- int minp,
- double minv,
- int maxp,
- double maxv);
+char *perfdata (const char *,
+ long int,
+ const char *,
+ int,
+ long int,
+ int,
+ long int,
+ int,
+ long int,
+ int,
+ long int);
+
+char *fperfdata (const char *,
+ double,
+ const char *,
+ int,
+ double,
+ int,
+ double,
+ int,
+ double,
+ int,
+ double);
 
 /* The idea here is that, although not every plugin will use all of these, 
    most will or should.  Therefore, for consistency, these very common 
@@ -120,49 +137,71 @@ char *fperfdata (const char *label,
 #define COPYRIGHT "Copyright (c) %s Nagios Plugin Development Team\n\
 \t<%s>\n\n"
 
-#define UT_HLP_VRS "\
+#define UT_HLP_VRS _("\
        %s (-h | --help) for detailed help\n\
-       %s (-V | --version) for version information\n"
+       %s (-V | --version) for version information\n")
 
-#define UT_HELP_VRSN "\
+#define UT_HELP_VRSN _("\
 \nOptions:\n\
  -h, --help\n\
     Print detailed help screen\n\
  -V, --version\n\
-    Print version information\n"
+    Print version information\n")
 
-#define UT_HOST_PORT "\
+#define UT_HOST_PORT _("\
  -H, --hostname=ADDRESS\n\
-    Host name or IP Address\n\
+    Host name, IP Address, or unix socket (must be an absolute path)\n\
  -%c, --port=INTEGER\n\
-    Port number (default: %s)\n"
+    Port number (default: %s)\n")
 
-#define UT_IPv46 "\
+#define UT_IPv46 _("\
  -4, --use-ipv4\n\
     Use IPv4 connection\n\
  -6, --use-ipv6\n\
-    Use IPv6 connection\n"
+    Use IPv6 connection\n")
 
-#define UT_VERBOSE "\
+#define UT_VERBOSE _("\
  -v, --verbose\n\
-    Show details for command-line debugging (Nagios may truncate output)\n"
+    Show details for command-line debugging (Nagios may truncate output)\n")
 
-#define UT_WARN_CRIT "\
+#define UT_WARN_CRIT _("\
  -w, --warning=DOUBLE\n\
     Response time to result in warning status (seconds)\n\
  -c, --critical=DOUBLE\n\
-    Response time to result in critical status (seconds)\n"
+    Response time to result in critical status (seconds)\n")
+
+#define UT_WARN_CRIT_RANGE _("\
+ -w, --warning=RANGE\n\
+    Warning range (format: start:end). Alert if outside this range\n\
+ -c, --critical=RANGE\n\
+    Critical range\n")
 
-#define UT_TIMEOUT "\
+#define UT_TIMEOUT _("\
  -t, --timeout=INTEGER\n\
-    Seconds before connection times out (default: %d)\n"
+    Seconds before connection times out (default: %d)\n")
 
-#define UT_SUPPORT "\n\
+#ifdef NP_EXTRA_OPTS
+#define UT_EXTRA_OPTS _("\
+ --extra-opts=[section][@file]\n\
+    Read options from an ini file. See http://nagiosplugins.org/extra-opts\n\
+    for usage and examples.\n")
+#else
+#define UT_EXTRA_OPTS ""
+#endif
+
+#define UT_THRESHOLDS_NOTES _("\
+ See:\n\
+ http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT\n\
+ for THRESHOLD format and examples.\n")
+
+#define UT_SUPPORT _("\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"
+send email to nagiosplug-devel@lists.sourceforge.net\n\n")
 
-#define UT_NOWARRANTY "\
+#define UT_NOWARRANTY _("\n\
 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"
+For more information about these matters, see the file named COPYING.\n")
+
+#endif /* NP_UTILS_H */