Code

Added check for "%" in COUNTER <description>. If it exists, <description> is used...
[nagiosplug.git] / plugins / check_nt.c
index c7fc74596948d94ab76c24885fc3637ecea6f639..fa93fce745fb82ffb71b128586798c98bacd65fd 100644 (file)
  *
  *****************************************************************************/
 
+const char *progname = "check_nt";
+const char *revision = "$Revision$";
+const char *copyright = "2003-2004";
+const char *email = "nagiosplug-devel@lists.sourceforge.net";
+
 #include "common.h"
 #include "netutils.h"
 #include "utils.h"
@@ -65,8 +70,6 @@ int check_critical_value=FALSE;
 enum checkvars vars_to_check = CHECK_NONE;
 int show_all=FALSE;
 
-const char *progname = "check_nt";
-
 char recv_buffer[MAX_INPUT_BUFFER];
 
 void fetch_data (const char* address, int port, const char* sendb);
@@ -77,6 +80,9 @@ void print_help(void);
 void print_usage(void);
 
 int main(int argc, char **argv){
+
+/* should be   int result = STATE_UNKNOWN; */
+
        int return_code = STATE_UNKNOWN;
        char *send_buffer=NULL;
        char *output_message=NULL;
@@ -97,7 +103,7 @@ int main(int argc, char **argv){
        unsigned long utilization;
        unsigned long uptime;
        unsigned long age_in_minutes;
-       double counter_value;
+       double counter_value = 0.0;
        int offset=0;
        int updays=0;
        int uphours=0;
@@ -110,8 +116,8 @@ int main(int argc, char **argv){
        bindtextdomain (PACKAGE, LOCALEDIR);
        textdomain (PACKAGE);
 
-       if(process_arguments(argc,argv) != TRUE)
-               usage (_("check_nt: could not parse arguments\n"));
+       if(process_arguments(argc,argv) == ERROR)
+               usage4 (_("Could not parse arguments"));
 
        /* initialize alarm signal handling */
        signal(SIGALRM,socket_timeout_alarm_handler);
@@ -350,7 +356,12 @@ int main(int argc, char **argv){
                        {
                                /* Let's format the output string, finally... */
 
-                               asprintf (&output_message, "%s = %.2f %s", description, counter_value, counter_unit);
+                                       if (strstr(description, "%") == NULL) {
+                                               asprintf (&output_message, "%s = %.2f %s", description, counter_value, counter_unit);
+                                       } else {
+                                               /* has formatting, will segv if wrong */
+                                       asprintf (&output_message, description, counter_value);
+                                       }
                                output_message = strcat (output_message, "|");
                                output_message = strcat (output_message,
                                                        fperfdata (description, counter_value, counter_unit,
@@ -601,12 +612,16 @@ void preparelist(char *string) {
 
 void print_help(void)
 {
-       print_revision(progname,"$Revision$");
-       printf (_("\
-Copyright (c) 2000 Yves Rubin (rubiyz@yahoo.com)\n\n\
-This plugin collects data from the NSClient service running on a\n\
-Windows NT/2000/XP server.\n\n"));
+       print_revision(progname,revision);
+       
+       printf ("Copyright (c) 2000 Yves Rubin (rubiyz@yahoo.com)\n");
+       printf (COPYRIGHT, copyright, email);
+       
+       printf (_("This plugin collects data from the NSClient service running on a\n\
+Windows NT/2000/XP/2003 server.\n\n"));
+
        print_usage();
+       
   printf (_("\nOptions:\n\
 -H, --hostname=HOST\n\
   Name of the host to check\n\
@@ -623,8 +638,8 @@ Windows NT/2000/XP server.\n\n"));
 -h, --help\n\
   Print this help screen\n\
 -V, --version\n\
-  Print version information\n"),
-               PORT, DEFAULT_SOCKET_TIMEOUT);
+  Print version information\n"), PORT, DEFAULT_SOCKET_TIMEOUT);
+       
   printf (_("\
 -v, --variable=STRING\n\
   Variable to check.  Valid variables are:\n"));
@@ -662,7 +677,8 @@ Windows NT/2000/XP server.\n\n"));
      Request a -l parameters with the following syntax:\n\
                 -l \"\\\\<performance object>\\\\counter\",\"<description>\n\
      The <description> parameter is optional and \n\
-     is given to a printf output command which require a float parameters.\n\
+     is given to a printf output command which requires a float parameter.\n\
+     If <description> does not include \"%%\", it is used as a label.\n\
      Some examples:\n\
        \"Paging file usage is %%.2f %%%%\"\n\
        \"%%.f %%%% paging file used.\"\n"));
@@ -676,8 +692,7 @@ Windows NT/2000/XP server.\n\n"));
 
 void print_usage(void)
 {
-       printf(_("\
+       printf("\
 Usage: %s -H host -v variable [-p port] [-w warning] [-c critical]\n\
-  [-l params] [-d SHOWALL] [-t timeout]\n"), progname);
-       printf (_(UT_HLP_VRS), progname, progname);
+                [-l params] [-d SHOWALL] [-t timeout]\n", progname);
 }