Code

Fix for regex input of '|', being output causing problems with Nagios' parsing of
[nagiosplug.git] / plugins / check_game.c
index 79abec33c77bd94bf812d11dbd2db179d4bce0b8..5496c4dc5f3cb9580784457f81265cc8df9971a4 100644 (file)
@@ -1,41 +1,36 @@
-/******************************************************************************
-*
+/*****************************************************************************
+* 
 * Nagios check_game plugin
-*
+* 
 * License: GPL
-* Copyright (c) 1999-2006 nagios-plugins team
-*
-* Last Modified: $Date$
-*
+* Copyright (c) 2002-2007 Nagios Plugins Development Team
+* 
 * Description:
-*
+* 
 * This file contains the check_game plugin
-*
+* 
 * This plugin tests game server connections with the specified host.
 * using the qstat program
-*
-* License Information:
-*
-* This program is free software; you can redistribute it and/or modify
+* 
+* 
+* 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/>.
+* 
 *
-* $Id$
 *****************************************************************************/
 
 const char *progname = "check_game";
-const char *revision = "$Revision$";
-const char *copyright = "2002-2006";
+const char *copyright = "2002-2007";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
 #include "common.h"
@@ -79,7 +74,10 @@ main (int argc, char **argv)
   setlocale (LC_ALL, "");
   bindtextdomain (PACKAGE, LOCALEDIR);
   textdomain (PACKAGE);
-  
+
+  /* Parse extra opts if any */
+  argv=np_extra_opts (&argc, argv, progname);
+
   if (process_arguments (argc, argv) == ERROR)
     usage_va(_("Could not parse arguments"));
 
@@ -88,7 +86,7 @@ main (int argc, char **argv)
   /* create the command line to execute */
   asprintf (&command_line, "%s -raw %s -%s %s",
             PATH_TO_QSTAT, QSTAT_DATA_DELIMITER, game_type, server_ip);
-  
+
   if (port)
     asprintf (&command_line, "%s:%-d", command_line, port);
 
@@ -103,7 +101,7 @@ main (int argc, char **argv)
   /* was thinking about running qstat without any options, capturing the
      -default line, parsing it & making an array of all know server types
      but thought this would be too much hassle considering this is a tool
-     for intelligent sysadmins (ha). Could put a static array of known 
+     for intelligent sysadmins (ha). Could put a static array of known
      server types in a header file but then we'd be limiting ourselves
 
      In the end, I figured I'd simply let an error occur & then trap it
@@ -137,10 +135,10 @@ main (int argc, char **argv)
     result = STATE_CRITICAL;
   }
   else {
-    printf ("OK: %s/%s %s (%s), Ping: %s ms|%s %s\n", 
+    printf ("OK: %s/%s %s (%s), Ping: %s ms|%s %s\n",
             ret[qstat_game_players],
             ret[qstat_game_players_max],
-            ret[qstat_game_field], 
+            ret[qstat_game_field],
             ret[qstat_map_field],
             ret[qstat_ping_field],
             perfdata ("players", atol(ret[qstat_game_players]), "",
@@ -200,7 +198,7 @@ process_arguments (int argc, char **argv)
       print_help ();
       exit (STATE_OK);
     case 'V': /* version */
-      print_revision (progname, revision);
+      print_revision (progname, NP_VERSION);
       exit (STATE_OK);
     case 'v': /* version */
       verbose = TRUE;
@@ -291,7 +289,7 @@ validate_arguments (void)
 void
 print_help (void)
 {
-  print_revision (progname, revision);
+  print_revision (progname, NP_VERSION);
 
   printf ("Copyright (c) 1999 Ian Cass, Knowledge Matters Limited\n");
   printf (COPYRIGHT, copyright, email);
@@ -299,11 +297,12 @@ print_help (void)
   printf (_("This plugin tests game server connections with the specified host."));
 
   printf ("\n\n");
+
   print_usage ();
 
-  printf (_(UT_HELP_VRSN));
-  
+  printf (UT_HELP_VRSN);
+  printf (UT_EXTRA_OPTS);
+
   printf (" %s\n", "-p");
   printf ("    %s\n", _("Optional port of which to connect"));
   printf (" %s\n", "gf");
@@ -313,17 +312,15 @@ print_help (void)
   printf (" %s\n", "-pf");
   printf ("    %s\n", _("Field number in raw qstat output that contains ping time"));
 
-  printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+  printf (UT_TIMEOUT, DEFAULT_SOCKET_TIMEOUT);
 
+  printf ("\n");
   printf ("%s\n", _("Notes:"));
+  printf (" %s\n", _("This plugin uses the 'qstat' command, the popular game server status query tool."));
+  printf (" %s\n", _("If you don't have the package installed, you will need to download it from"));
+  printf (" %s\n", _("http://www.activesw.com/people/steve/qstat.html before you can use this plugin."));
 
-  printf ("%s\n", _("This plugin uses the 'qstat' command, the popular game server status query tool ."));
-
-  printf ("%s\n", _("If you don't have the package installed, you will need to download it from"));
-
-  printf ("%s\n", _("http://www.activesw.com/people/steve/qstat.html before you can use this plugin."));
-
-  printf (_(UT_SUPPORT));
+  printf (UT_SUPPORT);
 }
 
 
@@ -331,8 +328,8 @@ print_help (void)
 void
 print_usage (void)
 {
-  printf (_("Usage:"));
-  printf (" %s <game> <ip_address> [-p port] [-gf game_field] [-mf map_field] [-pf ping_field]\n", progname);
+  printf ("%s\n", _("Usage:"));
+  printf (" %s [-hvV] [-P port] [-t timeout] [-g game_field] [-m map_field] [-p ping_field] [-G game-time] [-H hostname] <game> <ip_address>\n", progname);
 }
 
 /******************************************************************************
@@ -340,7 +337,7 @@ print_usage (void)
  * Test Cases:
  *
  * ./check_game --players 7 -p 8 --map 5 qs 67.20.190.61 26000
- * 
+ *
  * qstat -raw , -qs 67.20.190.61
  *  ==> QS,67.20.190.61,Nightmare.fintek.ca,67.20.190.61:26000,3,e2m1,6,0,83,0
  *