Code

check_dns needs a space between 'time' and the hostname
[nagiosplug.git] / plugins / check_users.c
index 50851075b376b31b31764d5b2e428349e862f90f..d1b4f01898e5a8130871ef55387c86c5da112c35 100644 (file)
@@ -1,54 +1,37 @@
 /*****************************************************************************
-*
-* 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 2 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, write to the Free Software
-* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*
-*****************************************************************************/
 
-#include "common.h"
-#include "popen.h"
-#include "utils.h"
+ 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 2 of the License, or
+ (at your option) any later version.
 
-const char *progname = "check_users";
-const char *revision = "$Revision$";
-const char *copyright = "2002-2003";
-const char *authors = "Nagios Plugin Development Team";
-const char *email = "nagiosplug-devel@lists.sourceforge.net";
+ 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.
 
-const char *summary = "\
-This plugin checks the number of users currently logged in on the local\n\
-system and generates an error if the number exceeds the thresholds specified.\n";
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-const char *option_summary = "-w <users> -c <users>";
+ $Id$
+*****************************************************************************/
 
-const char *options = "\
- -w, --warning=INTEGER\n\
-    Set WARNING status if more than INTEGER users are logged in\n\
- -c, --critical=INTEGER\n\
-    Set CRITICAL status if more than INTEGER users are logged in\n";
+const char *progname = "check_users";
+const char *revision = "$Revision$";
+const char *copyright = "2000-2004";
+const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
-const char *standard_options = "\
- -h, --help\n\
-    Print detailed help screen\n\
- -V, --version\n\
-    Print version information\n\n";
+#include "common.h"
+#include "popen.h"
+#include "utils.h"
 
 #define possibly_set(a,b) ((a) == 0 ? (b) : 0)
 
 int process_arguments (int, char **);
-void print_usage (void);
 void print_help (void);
+void print_usage (void);
 
 int wusers = -1;
 int cusers = -1;
@@ -57,22 +40,29 @@ int
 main (int argc, char **argv)
 {
        int users = -1;
-       int result = STATE_OK;
+       int result = STATE_UNKNOWN;
        char input_buffer[MAX_INPUT_BUFFER];
+       char *perf;
+
+       setlocale (LC_ALL, "");
+       bindtextdomain (PACKAGE, LOCALEDIR);
+       textdomain (PACKAGE);
+
+       perf = strdup("");
 
        if (process_arguments (argc, argv) == ERROR)
-               usage ("Could not parse arguments\n");
+               usage4 (_("Could not parse arguments"));
 
        /* run the command */
        child_process = spopen (WHO_COMMAND);
        if (child_process == NULL) {
-               printf ("Could not open pipe: %s\n", WHO_COMMAND);
+               printf (_("Could not open pipe: %s\n"), WHO_COMMAND);
                return STATE_UNKNOWN;
        }
 
        child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r");
        if (child_stderr == NULL)
-               printf ("Could not open stderr for %s\n", WHO_COMMAND);
+               printf (_("Could not open stderr for %s\n"), WHO_COMMAND);
 
        users = 0;
 
@@ -85,7 +75,7 @@ main (int argc, char **argv)
                }
 
                /* get total logged in users */
-               if (sscanf (input_buffer, "# users=%d", &users) == 1)
+               if (sscanf (input_buffer, _("# users=%d"), &users) == 1)
                        break;
 
        }
@@ -108,26 +98,30 @@ main (int argc, char **argv)
                result = STATE_OK;
 
        if (result == STATE_UNKNOWN)
-               printf ("Unable to read output\n");
-       else
-               printf ("USERS %s - %d users currently logged in\n", state_text (result),
-                                               users);
+               printf (_("Unable to read output\n"));
+       else {
+               asprintf(&perf, "%s", perfdata ("users", users, "",
+                 TRUE, wusers,
+                 TRUE, cusers,
+                 TRUE, 0,
+                 FALSE, 0));
+               printf (_("USERS %s - %d users currently logged in |%s\n"), state_text (result),
+                 users, perf);
+       }
 
        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[] = {
                {"critical", required_argument, 0, 'c'},
                {"warning", required_argument, 0, 'w'},
                {"version", no_argument, 0, 'V'},
@@ -139,14 +133,14 @@ process_arguments (int argc, char **argv)
                usage ("\n");
 
        while (1) {
-               c = getopt_long (argc, argv, "+hVvc:w:", long_options, &option_index);
+               c = getopt_long (argc, argv, "+hVvc:w:", 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);
+                       printf (_("%s: Unknown argument: %s\n\n"), progname, optarg);
                        print_usage ();
                        exit (STATE_UNKNOWN);
                case 'h':                                                                       /* help */
@@ -157,13 +151,15 @@ process_arguments (int argc, char **argv)
                        exit (STATE_OK);
                case 'c':                                                                       /* critical */
                        if (!is_intnonneg (optarg))
-                               usage ("Critical threshold must be a nonnegative integer\n");
-                       cusers = atoi (optarg);
+                               usage (_("Critical threshold must be a positive integer\n"));
+                       else
+                               cusers = atoi (optarg);
                        break;
                case 'w':                                                                       /* warning */
                        if (!is_intnonneg (optarg))
-                               usage ("Warning threshold must be a nonnegative integer\n");
-                       wusers = atoi (optarg);
+                               usage (_("Warning threshold must be a positive integer\n"));
+                       else
+                               wusers = atoi (optarg);
                        break;
                }
        }
@@ -171,20 +167,20 @@ process_arguments (int argc, char **argv)
        c = optind;
        if (wusers == -1 && argc > c) {
                if (is_intnonneg (argv[c]) == FALSE)
-                       usage ("Warning threshold must be a nonnegative integer\n");
-               wusers = atoi (argv[c++]);
+                       usage (_("Warning threshold must be a positive integer\n"));
+               else
+                       wusers = atoi (argv[c++]);
        }
 
        if (cusers == -1 && argc > c) {
                if (is_intnonneg (argv[c]) == FALSE)
-                       usage ("Warning threshold must be a nonnegative integer\n");
-               cusers = atoi (argv[c]);
+                       usage (_("Warning threshold must be a positive integer\n"));
+               else
+                       cusers = atoi (argv[c]);
        }
 
        return OK;
 }
-\f
-
 
 
 
@@ -192,23 +188,31 @@ void
 print_help (void)
 {
        print_revision (progname, revision);
-       printf ("Copyright (c) %s %s\n\t<%s>\n\n", copyright, authors, email);
-       printf (summary);
+
+       printf ("Copyright (c) 1999 Ethan Galstad\n");
+       printf (COPYRIGHT, copyright, email);
+
+       printf (_("\
+This plugin checks the number of users currently logged in on the local\n\
+system and generates an error if the number exceeds the thresholds specified.\n"));
+
        print_usage ();
-       printf ("\nOptions:\n");
-       printf (options);
-       printf (standard_options);
-       support ();
-}
 
+       printf (_(UT_HELP_VRSN));
 
+       printf (_("\
+ -w, --warning=INTEGER\n\
+    Set WARNING status if more than INTEGER users are logged in\n\
+ -c, --critical=INTEGER\n\
+    Set CRITICAL status if more than INTEGER users are logged in\n"));
+
+       printf (_(UT_SUPPORT));
+}
 
 
 
 void
 print_usage (void)
 {
-       printf ("Usage: %s %s\n", progname, option_summary);
-       printf ("       %s (-h|--help)\n", progname);
-       printf ("       %s (-V|--version)\n", progname);
+       printf ("Usage: %s -w <users> -c <users>\n", progname);
 }