Code

check_tcp code cleanup from andreas plus fix to andreas' patch from sean
[nagiosplug.git] / plugins / check_overcr.c
index 4ee47a519fa99bbf02943aa0075484777a43aeac..a4abf2b9cc35060de8457623e0963f0d7e03e711 100644 (file)
  along with this program; if not, write to the Free Software
  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
+ $Id$
 ******************************************************************************/
 
 const char *progname = "check_overcr";
 const char *revision = "$Revision$";
-const char *copyright = "2000-2003";
+const char *copyright = "2000-2004";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
 #include "common.h"
@@ -61,7 +63,7 @@ void print_help (void);
 int
 main (int argc, char **argv)
 {
-       int result;
+       int result = STATE_UNKNOWN;
        char recv_buffer[MAX_INPUT_BUFFER];
        char temp_buffer[MAX_INPUT_BUFFER];
        char *temp_ptr = NULL;
@@ -79,8 +81,12 @@ main (int argc, char **argv)
        int uptime_hours = 0;
        int uptime_minutes = 0;
 
+       setlocale (LC_ALL, "");
+       bindtextdomain (PACKAGE, LOCALEDIR);
+       textdomain (PACKAGE);
+
        if (process_arguments (argc, argv) == ERROR)
-               usage ("Could not parse arguments\n");
+               usage4 (_("Could not parse arguments"));
 
        /* initialize alarm signal handling */
        signal (SIGALRM, socket_timeout_alarm_handler);
@@ -101,22 +107,25 @@ main (int argc, char **argv)
        case LOAD15:
        
                if (result != STATE_OK)
-                       terminate (result, _("Unknown error fetching load data\n"));
+                       die (result, _("Unknown error fetching load data\n"));
 
                temp_ptr = (char *) strtok (recv_buffer, "\r\n");
                if (temp_ptr == NULL)
-                       terminate (STATE_CRITICAL, _("Invalid response from server - no load information\n"));
-               load_1min = strtod (temp_ptr, NULL);
+                       die (STATE_CRITICAL, _("Invalid response from server - no load information\n"));
+               else
+                       load_1min = strtod (temp_ptr, NULL);
 
                temp_ptr = (char *) strtok (NULL, "\r\n");
                if (temp_ptr == NULL)
-                       terminate (STATE_CRITICAL, _("Invalid response from server after load 1\n"));
-               load_5min = strtod (temp_ptr, NULL);
+                       die (STATE_CRITICAL, _("Invalid response from server after load 1\n"));
+               else
+                       load_5min = strtod (temp_ptr, NULL);
 
                temp_ptr = (char *) strtok (NULL, "\r\n");
                if (temp_ptr == NULL)
-                       terminate (STATE_CRITICAL, _("Invalid response from server after load 5\n"));
-               load_15min = strtod (temp_ptr, NULL);
+                       die (STATE_CRITICAL, _("Invalid response from server after load 5\n"));
+               else
+                       load_15min = strtod (temp_ptr, NULL);
 
                switch (vars_to_check) {
                case LOAD1:
@@ -138,7 +147,7 @@ main (int argc, char **argv)
                else if (check_warning_value == TRUE && (load >= warning_value))
                        result = STATE_WARNING;
 
-               terminate (result,
+               die (result,
                          _("Load %s - %s-min load average = %0.2f"),
                                                         state_text(result),
                          temp_buffer,
@@ -149,7 +158,7 @@ main (int argc, char **argv)
        case DPU:
 
                if (result != STATE_OK)
-                       terminate (result, _("Unknown error fetching disk data\n"));
+                       die (result, _("Unknown error fetching disk data\n"));
 
                for (temp_ptr = (char *) strtok (recv_buffer, " ");
                     temp_ptr != NULL;
@@ -159,8 +168,9 @@ main (int argc, char **argv)
                                found_disk = TRUE;
                                temp_ptr = (char *) strtok (NULL, "%");
                                if (temp_ptr == NULL)
-                                       terminate (STATE_CRITICAL, _("Invalid response from server\n"));
-                               percent_used_disk_space = strtoul (temp_ptr, NULL, 10);
+                                       die (STATE_CRITICAL, _("Invalid response from server\n"));
+                               else
+                                       percent_used_disk_space = strtoul (temp_ptr, NULL, 10);
                                break;
                        }
 
@@ -169,8 +179,8 @@ main (int argc, char **argv)
 
                /* error if we couldn't find the info for the disk */
                if (found_disk == FALSE)
-                       terminate (STATE_CRITICAL,
-                                  "Error: Disk '%s' non-existent or not mounted",
+                       die (STATE_CRITICAL,
+                                  "CRITICAL - Disk '%s' non-existent or not mounted",
                                   disk_name);
 
                if (check_critical_value == TRUE && (percent_used_disk_space >= critical_value))
@@ -178,23 +188,23 @@ main (int argc, char **argv)
                else if (check_warning_value == TRUE && (percent_used_disk_space >= warning_value))
                        result = STATE_WARNING;
 
-               terminate (result, "Disk %s - %lu%% used on %s", state_text(result), percent_used_disk_space, disk_name);
+               die (result, "Disk %s - %lu%% used on %s", state_text(result), percent_used_disk_space, disk_name);
 
                break;
 
        case NETSTAT:
 
                if (result != STATE_OK)
-                       terminate (result, _("Unknown error fetching network status\n"));
-
-               port_connections = strtod (recv_buffer, NULL);
+                       die (result, _("Unknown error fetching network status\n"));
+               else
+                       port_connections = strtod (recv_buffer, NULL);
 
                if (check_critical_value == TRUE && (port_connections >= critical_value))
                        result = STATE_CRITICAL;
                else if (check_warning_value == TRUE && (port_connections >= warning_value))
                        result = STATE_WARNING;
 
-               terminate (result,
+               die (result,
                           _("Net %s - %d connection%s on port %d"),
                           state_text(result),
                           port_connections,
@@ -206,24 +216,24 @@ main (int argc, char **argv)
        case PROCS:
 
                if (result != STATE_OK)
-                       terminate (result, _("Unknown error fetching process status\n"));
+                       die (result, _("Unknown error fetching process status\n"));
 
                temp_ptr = (char *) strtok (recv_buffer, "(");
                if (temp_ptr == NULL)
-                       terminate (STATE_CRITICAL, _("Invalid response from server\n"));
+                       die (STATE_CRITICAL, _("Invalid response from server\n"));
 
                temp_ptr = (char *) strtok (NULL, ")");
                if (temp_ptr == NULL)
-                       terminate (STATE_CRITICAL, _("Invalid response from server\n"));
-
-               processes = strtod (temp_ptr, NULL);
+                       die (STATE_CRITICAL, _("Invalid response from server\n"));
+               else
+                       processes = strtod (temp_ptr, NULL);
 
                if (check_critical_value == TRUE && (processes >= critical_value))
                        result = STATE_CRITICAL;
                else if (check_warning_value == TRUE && (processes >= warning_value))
                        result = STATE_WARNING;
 
-               terminate (result,
+               die (result,
                           _("Process %s - %d instance%s of %s running"),
                           state_text(result),
                           processes,
@@ -250,7 +260,7 @@ main (int argc, char **argv)
                uptime_raw_minutes %= 60;
                uptime_minutes = uptime_raw_minutes;
 
-               terminate (result,
+               die (result,
                           _("Uptime %s - Up %d days %d hours %d minutes"),
                           state_text(result),
                           uptime_days,
@@ -259,30 +269,20 @@ main (int argc, char **argv)
                break;
 
        default:
-               terminate (STATE_UNKNOWN, _("Nothing to check!\n"));
+               die (STATE_UNKNOWN, _("Nothing to check!\n"));
                break;
        }
-
-       /* reset timeout */
-       alarm (0);
-
-       printf (_("Reached end of program with no data returned\n"));
-
-       return result;
 }
 
 
-
-
-
 /* process command-line arguments */
 int
 process_arguments (int argc, char **argv)
 {
        int c;
 
-       int option_index = 0;
-       static struct option long_options[] = {
+       int option = 0;
+       static struct option longopts[] = {
                {"port", required_argument, 0, 'p'},
                {"timeout", required_argument, 0, 't'},
                {"critical", required_argument, 0, 'c'},
@@ -316,22 +316,20 @@ process_arguments (int argc, char **argv)
        }
 
        while (1) {
-               c = getopt_long (argc, argv, "+hVH:t:c:w:p:v:", long_options,
-                                                                        &option_index);
+               c = getopt_long (argc, argv, "+hVH:t:c:w:p:v:", longopts,
+                                                                        &option);
 
                if (c == -1 || c == EOF || c == 1)
                        break;
 
                switch (c) {
                case '?':                                                                       /* print short usage statement if args not parsable */
-                       printf (_("%s: Unknown argument: %s\n\n"), progname, optarg);
-                       print_usage ();
-                       exit (STATE_UNKNOWN);
+                       usage2 (_("Unknown argument"), optarg);
                case 'h':                                                                       /* help */
                        print_help ();
                        exit (STATE_OK);
                case 'V':                                                                       /* version */
-                       print_revision (progname, "$Revision$");
+                       print_revision (progname, revision);
                        exit (STATE_OK);
                case 'H':                                                                       /* hostname */
                        server_address = optarg;
@@ -340,9 +338,8 @@ process_arguments (int argc, char **argv)
                        if (is_intnonneg (optarg))
                                server_port = atoi (optarg);
                        else
-                               terminate (STATE_UNKNOWN,
-                                                                        _("Server port an integer (seconds)\nType '%s -h' for additional help\n"),
-                                                                        progname);
+                               die (STATE_UNKNOWN,
+                                                                        _("Server port an integer\n"));
                        break;
                case 'v':                                                                       /* variable */
                        if (strcmp (optarg, "LOAD") == 0) {
@@ -393,16 +390,7 @@ process_arguments (int argc, char **argv)
        }
        return OK;
 }
-\f
-void
-print_usage (void)
-{
-       printf (_("\
-Usage: %s -H host [-p port] [-v variable] [-w warning] [-c critical]\n\
-  [-t timeout]\n"),
-               progname);
-       printf (_(UT_HLP_VRS), progname, progname);
-}
+
 
 void
 print_help (void)
@@ -412,8 +400,8 @@ print_help (void)
 
        print_revision (progname, revision);
 
-       printf (_("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n"));
-       printf (_(COPYRIGHT), copyright, email);
+       printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n");
+       printf (COPYRIGHT, copyright, email);
 
        printf (_("\
 This plugin attempts to contact the Over-CR collector daemon running on the\n\
@@ -457,3 +445,12 @@ Notes:\n\
 
        printf (_(UT_SUPPORT));
 }
+
+
+void
+print_usage (void)
+{
+       printf ("\
+Usage: %s -H host [-p port] [-v variable] [-w warning] [-c critical]\n\
+                    [-t timeout]\n", progname);
+}