Code

Add newline after "Usage:" in --help
[nagiosplug.git] / plugins / check_users.c
index 50851075b376b31b31764d5b2e428349e862f90f..8368612ad8be32c2ea4757b294b05ad3f9083156 100644 (file)
@@ -1,54 +1,48 @@
 /*****************************************************************************
-*
-* This program is free software; you can redistribute it and/or modify
+* 
+* Nagios check_users plugin
+* 
+* License: GPL
+* Copyright (c) 2000-2007 Nagios Plugins Development Team
+* 
+* Description:
+* 
+* This file contains the check_users plugin
+* 
+* This plugin checks the number of users currently logged in on the local
+* system and generates an error if the number exceeds the thresholds
+* specified.
+* 
+* 
+* 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
+* 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, write to the Free Software
-* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*
+* along with this program.  If not, see <http://www.gnu.org/licenses/>.
+* 
+* 
 *****************************************************************************/
 
-#include "common.h"
-#include "popen.h"
-#include "utils.h"
-
 const char *progname = "check_users";
-const char *revision = "$Revision$";
-const char *copyright = "2002-2003";
-const char *authors = "Nagios Plugin Development Team";
+const char *copyright = "2000-2007";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
-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";
-
-const char *option_summary = "-w <users> -c <users>";
-
-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 *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 +51,32 @@ 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("");
+
+       /* Parse extra opts if any */
+       argv=np_extra_opts (&argc, argv, progname);
 
        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 +89,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;
 
        }
@@ -100,34 +104,38 @@ main (int argc, char **argv)
                result = possibly_set (result, STATE_UNKNOWN);
 
        /* else check the user count against warning and critical thresholds */
-       if (users >= cusers)
+       if (users > cusers)
                result = STATE_CRITICAL;
-       else if (users >= wusers)
+       else if (users > wusers)
                result = STATE_WARNING;
        else if (users >= 0)
                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 ("%s\n", _("Unable to read output"));
+       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,31 +147,31 @@ 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);
-                       print_usage ();
-                       exit (STATE_UNKNOWN);
+                       usage5 ();
                case 'h':                                                                       /* help */
                        print_help ();
                        exit (STATE_OK);
                case 'V':                                                                       /* version */
-                       print_revision (progname, revision);
+                       print_revision (progname, NP_VERSION);
                        exit (STATE_OK);
                case 'c':                                                                       /* critical */
                        if (!is_intnonneg (optarg))
-                               usage ("Critical threshold must be a nonnegative integer\n");
-                       cusers = atoi (optarg);
+                               usage4 (_("Critical threshold must be a positive integer"));
+                       else
+                               cusers = atoi (optarg);
                        break;
                case 'w':                                                                       /* warning */
                        if (!is_intnonneg (optarg))
-                               usage ("Warning threshold must be a nonnegative integer\n");
-                       wusers = atoi (optarg);
+                               usage4 (_("Warning threshold must be a positive integer"));
+                       else
+                               wusers = atoi (optarg);
                        break;
                }
        }
@@ -171,44 +179,53 @@ 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++]);
+                       usage4 (_("Warning threshold must be a positive integer"));
+               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]);
+                       usage4 (_("Warning threshold must be a positive integer"));
+               else
+                       cusers = atoi (argv[c]);
        }
 
        return OK;
 }
-\f
-
 
 
 
 void
 print_help (void)
 {
-       print_revision (progname, revision);
-       printf ("Copyright (c) %s %s\n\t<%s>\n\n", copyright, authors, email);
-       printf (summary);
+       print_revision (progname, NP_VERSION);
+
+       printf ("Copyright (c) 1999 Ethan Galstad\n");
+       printf (COPYRIGHT, copyright, email);
+
+       printf ("%s\n", _("This plugin checks the number of users currently logged in on the local"));
+  printf ("%s\n", _("system and generates an error if the number exceeds the thresholds specified."));
+
+  printf ("\n\n");
+
        print_usage ();
-       printf ("\nOptions:\n");
-       printf (options);
-       printf (standard_options);
-       support ();
-}
 
+       printf (UT_HELP_VRSN);
+       printf (UT_EXTRA_OPTS);
 
+       printf (" %s\n", "-w, --warning=INTEGER");
+  printf ("    %s\n", _("Set WARNING status if more than INTEGER users are logged in"));
+  printf (" %s\n", "-c, --critical=INTEGER");
+  printf ("    %s\n", _("Set CRITICAL status if more than INTEGER users are logged in"));
 
+       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 ("%s\n", _("Usage:"));
+       printf ("%s -w <users> -c <users>\n", progname);
 }