Code

start of the cleaning of the localization
authorBenoit Mortier <opensides@users.sourceforge.net>
Mon, 14 Nov 2005 00:51:44 +0000 (00:51 +0000)
committerBenoit Mortier <opensides@users.sourceforge.net>
Mon, 14 Nov 2005 00:51:44 +0000 (00:51 +0000)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1282 f882894a-f735-0410-b71e-b25c423dba1c

plugins/check_dig.c
plugins/check_disk.c
plugins/check_dns.c
plugins/check_dummy.c
plugins/check_fping.c
plugins/check_game.c

index bc4dcd5c74f9b95a0b8add40a59c02a1c320cba1..c9fce613b9266b792d9ed4482042577bcd8e86ee 100644 (file)
@@ -26,7 +26,7 @@
 
 const char *progname = "check_dig";
 const char *revision = "$Revision$";
-const char *copyright = "2002-2004";
+const char *copyright = "2002-2005";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
 #include "common.h"
@@ -55,113 +55,113 @@ struct timeval tv;
 int
 main (int argc, char **argv)
 {
-       char *command_line;
-       output chld_out, chld_err;
-       char *msg = NULL;
-       size_t i;
-       char *t;
-       long microsec;
-       double elapsed_time;
-       int result = STATE_UNKNOWN;
-
-       setlocale (LC_ALL, "");
-       bindtextdomain (PACKAGE, LOCALEDIR);
-       textdomain (PACKAGE);
-
-       /* Set signal handling and alarm */
-       if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR)
-               usage_va(_("Cannot catch SIGALRM"));
-
-       if (process_arguments (argc, argv) == ERROR)
-               usage_va(_("Could not parse arguments"));
-
-       /* get the command to run */
-       asprintf (&command_line, "%s @%s -p %d %s -t %s",
-                 PATH_TO_DIG, dns_server, server_port, query_address, record_type);
-
-       alarm (timeout_interval);
-       gettimeofday (&tv, NULL);
-
-       if (verbose) {
-               printf ("%s\n", command_line);
-               if(expected_address != NULL) {
-                       printf (_("Looking for: '%s'\n"), expected_address);
-               } else {
-                       printf (_("Looking for: '%s'\n"), query_address);
-               }
-       }
-
-       /* run the command */
-       if(np_runcmd(command_line, &chld_out, &chld_err, 0) != 0) {
-               result = STATE_WARNING;
-               msg = (char *)_("dig returned an error status");
-       }
-
-       for(i = 0; i < chld_out.lines; i++) {
-               /* the server is responding, we just got the host name... */
-               if (strstr (chld_out.line[i], ";; ANSWER SECTION:")) {
-
-                       /* loop through the whole 'ANSWER SECTION' */
-                       for(; i < chld_out.lines; i++) {
-                               /* get the host address */
-                               if (verbose)
-                                       printf ("%s\n", chld_out.line[i]);
-
-                               if (strstr (chld_out.line[i], (expected_address == NULL ? query_address : expected_address)) != NULL) {
-                                       msg = chld_out.line[i];
-                                       result = STATE_OK;
-
-                                       /* Translate output TAB -> SPACE */
-                                       t = msg;
-                                       while ((t = strchr(t, '\t')) != NULL) *t = ' ';
-                                       break;
-                               }
-                       }
-
-                       if (result == STATE_UNKNOWN) {
-                               msg = (char *)_("Server not found in ANSWER SECTION");
-                               result = STATE_WARNING;
-                       }
-
-                       /* we found the answer section, so break out of the loop */
-                       break;
-               }
-       }
-
-       if (result == STATE_UNKNOWN)
-               msg = (char *)_("No ANSWER SECTION found");
-
-       /* If we get anything on STDERR, at least set warning */
-       if(chld_err.buflen > 0) {
-               result = max_state(result, STATE_WARNING);
-               if(!msg) for(i = 0; i < chld_err.lines; i++) {
-                       msg = strchr(chld_err.line[0], ':');
-                       if(msg) {
-                               msg++;
-                               break;
-                       }
-               }
-       }
-
-       microsec = deltime (tv);
-       elapsed_time = (double)microsec / 1.0e6;
-
-       if (critical_interval > UNDEFINED && elapsed_time > critical_interval)
-               result = STATE_CRITICAL;
-
-       else if (warning_interval > UNDEFINED && elapsed_time > warning_interval)
-               result = STATE_WARNING;
-
-       printf ("DNS %s - %.3f seconds response time (%s)|%s\n",
-               state_text (result), elapsed_time,
-               msg ? msg : _("Probably a non-existent host/domain"),
-               fperfdata("time", elapsed_time, "s",
-                         (warning_interval>UNDEFINED?TRUE:FALSE),
-                         warning_interval,
-                         (critical_interval>UNDEFINED?TRUE:FALSE),
-                                         critical_interval,
-                                         TRUE, 0, FALSE, 0));
-       return result;
+  char *command_line;
+  output chld_out, chld_err;
+  char *msg = NULL;
+  size_t i;
+  char *t;
+  long microsec;
+  double elapsed_time;
+  int result = STATE_UNKNOWN;
+
+  setlocale (LC_ALL, "");
+  bindtextdomain (PACKAGE, LOCALEDIR);
+  textdomain (PACKAGE);
+
+  /* Set signal handling and alarm */
+  if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR)
+    usage_va(_("Cannot catch SIGALRM"));
+
+  if (process_arguments (argc, argv) == ERROR)
+    usage_va(_("Could not parse arguments"));
+
+  /* get the command to run */
+  asprintf (&command_line, "%s @%s -p %d %s -t %s",
+            PATH_TO_DIG, dns_server, server_port, query_address, record_type);
+
+  alarm (timeout_interval);
+  gettimeofday (&tv, NULL);
+
+  if (verbose) {
+    printf ("%s\n", command_line);
+    if(expected_address != NULL) {
+      printf (_("Looking for: '%s'\n"), expected_address);
+    } else {
+      printf (_("Looking for: '%s'\n"), query_address);
+    }
+  }
+
+  /* run the command */
+  if(np_runcmd(command_line, &chld_out, &chld_err, 0) != 0) {
+    result = STATE_WARNING;
+    msg = (char *)_("dig returned an error status");
+  }
+
+  for(i = 0; i < chld_out.lines; i++) {
+    /* the server is responding, we just got the host name... */
+    if (strstr (chld_out.line[i], ";; ANSWER SECTION:")) {
+
+      /* loop through the whole 'ANSWER SECTION' */
+      for(; i < chld_out.lines; i++) {
+        /* get the host address */
+        if (verbose)
+          printf ("%s\n", chld_out.line[i]);
+
+        if (strstr (chld_out.line[i], (expected_address == NULL ? query_address : expected_address)) != NULL) {
+          msg = chld_out.line[i];
+          result = STATE_OK;
+
+          /* Translate output TAB -> SPACE */
+          t = msg;
+          while ((t = strchr(t, '\t')) != NULL) *t = ' ';
+          break;
+        }
+      }
+
+      if (result == STATE_UNKNOWN) {
+        msg = (char *)_("Server not found in ANSWER SECTION");
+        result = STATE_WARNING;
+      }
+
+      /* we found the answer section, so break out of the loop */
+      break;
+    }
+  }
+
+  if (result == STATE_UNKNOWN)
+    msg = (char *)_("No ANSWER SECTION found");
+
+  /* If we get anything on STDERR, at least set warning */
+  if(chld_err.buflen > 0) {
+    result = max_state(result, STATE_WARNING);
+    if(!msg) for(i = 0; i < chld_err.lines; i++) {
+      msg = strchr(chld_err.line[0], ':');
+      if(msg) {
+        msg++;
+        break;
+      }
+    }
+  }
+
+  microsec = deltime (tv);
+  elapsed_time = (double)microsec / 1.0e6;
+
+  if (critical_interval > UNDEFINED && elapsed_time > critical_interval)
+    result = STATE_CRITICAL;
+
+  else if (warning_interval > UNDEFINED && elapsed_time > warning_interval)
+    result = STATE_WARNING;
+
+  printf ("DNS %s - %.3f seconds response time (%s)|%s\n",
+          state_text (result), elapsed_time,
+          msg ? msg : _("Probably a non-existent host/domain"),
+          fperfdata("time", elapsed_time, "s",
+                    (warning_interval>UNDEFINED?TRUE:FALSE),
+                    warning_interval,
+                    (critical_interval>UNDEFINED?TRUE:FALSE),
+            critical_interval,
+            TRUE, 0, FALSE, 0));
+  return result;
 }
 
 
@@ -170,104 +170,104 @@ main (int argc, char **argv)
 int
 process_arguments (int argc, char **argv)
 {
-       int c;
-
-       int option = 0;
-       static struct option longopts[] = {
-               {"hostname", required_argument, 0, 'H'},
-               {"query_address", required_argument, 0, 'l'},
-               {"warning", required_argument, 0, 'w'},
-               {"critical", required_argument, 0, 'c'},
-               {"timeout", required_argument, 0, 't'},
-               {"verbose", no_argument, 0, 'v'},
-               {"version", no_argument, 0, 'V'},
-               {"help", no_argument, 0, 'h'},
-               {"record_type", required_argument, 0, 'T'},
-               {"expected_address", required_argument, 0, 'a'},
-               {0, 0, 0, 0}
-       };
-
-       if (argc < 2)
-               return ERROR;
-
-       while (1) {
-               c = getopt_long (argc, argv, "hVvt:l:H:w:c:T:a:", longopts, &option);
-
-               if (c == -1 || c == EOF)
-                       break;
-
-               switch (c) {
-               case 'h':                                                                       /* help */
-                       print_help ();
-                       exit (STATE_OK);
-               case 'V':                                                                       /* version */
-                       print_revision (progname, revision);
-                       exit (STATE_OK);
-               case 'H':                                                                       /* hostname */
-                       host_or_die(optarg);
-                       dns_server = optarg;
-                       break;
-               case 'p':                 /* server port */
-                       if (is_intpos (optarg)) {
-                               server_port = atoi (optarg);
-                       }
-                       else {
-                               usage_va(_("Port must be a positive integer - %s"), optarg);
-                       }
-                       break;
-               case 'l':                                                                       /* address to lookup */
-                       query_address = optarg;
-                       break;
-               case 'w':                                                                       /* warning */
-                       if (is_nonnegative (optarg)) {
-                               warning_interval = strtod (optarg, NULL);
-                       }
-                       else {
-                               usage_va(_("Warning interval must be a positive integer - %s"), optarg);
-                       }
-                       break;
-               case 'c':                                                                       /* critical */
-                       if (is_nonnegative (optarg)) {
-                               critical_interval = strtod (optarg, NULL);
-                       }
-                       else {
-                               usage_va(_("Critical interval must be a positive integer - %s"), optarg);
-                       }
-                       break;
-               case 't':                                                                       /* timeout */
-                       if (is_intnonneg (optarg)) {
-                               timeout_interval = atoi (optarg);
-                       }
-                       else {
-                               usage_va(_("Timeout interval must be a positive integer - %s"), optarg);
-                       }
-                       break;
-               case 'v':                                                                       /* verbose */
-                       verbose = TRUE;
-                       break;
-               case 'T':
-                       record_type = optarg;
-                       break;
-               case 'a':
-                       expected_address = optarg;
-                       break;
-               default:                                                                        /* usage_va */
-                       usage_va(_("Unknown argument - %s"), optarg);
-               }
-       }
-
-       c = optind;
-       if (dns_server == NULL) {
-               if (c < argc) {
-                       host_or_die(argv[c]);
-                       dns_server = argv[c];
-               }
-               else {
-                       dns_server = strdup ("127.0.0.1");
-               }
-       }
-
-       return validate_arguments ();
+  int c;
+
+  int option = 0;
+  static struct option longopts[] = {
+    {"hostname", required_argument, 0, 'H'},
+    {"query_address", required_argument, 0, 'l'},
+    {"warning", required_argument, 0, 'w'},
+    {"critical", required_argument, 0, 'c'},
+    {"timeout", required_argument, 0, 't'},
+    {"verbose", no_argument, 0, 'v'},
+    {"version", no_argument, 0, 'V'},
+    {"help", no_argument, 0, 'h'},
+    {"record_type", required_argument, 0, 'T'},
+    {"expected_address", required_argument, 0, 'a'},
+    {0, 0, 0, 0}
+  };
+
+  if (argc < 2)
+    return ERROR;
+
+  while (1) {
+    c = getopt_long (argc, argv, "hVvt:l:H:w:c:T:a:", longopts, &option);
+
+    if (c == -1 || c == EOF)
+      break;
+
+    switch (c) {
+    case 'h':                 /* help */
+      print_help ();
+      exit (STATE_OK);
+    case 'V':                 /* version */
+      print_revision (progname, revision);
+      exit (STATE_OK);
+    case 'H':                 /* hostname */
+      host_or_die(optarg);
+      dns_server = optarg;
+      break;
+    case 'p':                 /* server port */
+      if (is_intpos (optarg)) {
+        server_port = atoi (optarg);
+      }
+      else {
+        usage_va(_("Port must be a positive integer - %s"), optarg);
+      }
+      break;
+    case 'l':                 /* address to lookup */
+      query_address = optarg;
+      break;
+    case 'w':                 /* warning */
+      if (is_nonnegative (optarg)) {
+        warning_interval = strtod (optarg, NULL);
+      }
+      else {
+        usage_va(_("Warning interval must be a positive integer - %s"), optarg);
+      }
+      break;
+    case 'c':                 /* critical */
+      if (is_nonnegative (optarg)) {
+        critical_interval = strtod (optarg, NULL);
+      }
+      else {
+        usage_va(_("Critical interval must be a positive integer - %s"), optarg);
+      }
+      break;
+    case 't':                 /* timeout */
+      if (is_intnonneg (optarg)) {
+        timeout_interval = atoi (optarg);
+      }
+      else {
+        usage_va(_("Timeout interval must be a positive integer - %s"), optarg);
+      }
+      break;
+    case 'v':                 /* verbose */
+      verbose = TRUE;
+      break;
+    case 'T':
+      record_type = optarg;
+      break;
+    case 'a':
+      expected_address = optarg;
+      break;
+    default:                  /* usage_va */
+      usage_va(_("Unknown argument - %s"), optarg);
+    }
+  }
+
+  c = optind;
+  if (dns_server == NULL) {
+    if (c < argc) {
+      host_or_die(argv[c]);
+      dns_server = argv[c];
+    }
+    else {
+      dns_server = strdup ("127.0.0.1");
+    }
+  }
+
+  return validate_arguments ();
 }
 
 
@@ -275,7 +275,7 @@ process_arguments (int argc, char **argv)
 int
 validate_arguments (void)
 {
-       return OK;
+  return OK;
 }
 
 
@@ -283,43 +283,56 @@ validate_arguments (void)
 void
 print_help (void)
 {
-       char *myport;
+  char *myport;
 
-       asprintf (&myport, "%d", DEFAULT_PORT);
+  asprintf (&myport, "%d", DEFAULT_PORT);
 
-       print_revision (progname, revision);
+  print_revision (progname, revision);
 
-       printf ("Copyright (c) 2000 Karl DeBisschop <kdebisschop@users.sourceforge.net>\n");
-       printf (COPYRIGHT, copyright, email);
+  printf ("Copyright (c) 2000 Karl DeBisschop <kdebisschop@users.sourceforge.net>\n");
+  printf (COPYRIGHT, copyright, email);
 
-       printf (_("Test the DNS service on the specified host using dig\n\n"));
+  printf (_("This plugin test the DNS service on the specified host using dig"));
 
-       print_usage ();
+  printf ("\n\n");
 
-       printf (_(UT_HELP_VRSN));
+  print_usage ();
 
-       printf (_(UT_HOST_PORT), 'P', myport);
+  printf (_(UT_HELP_VRSN));
 
-       printf (_("\
- -l, --lookup=STRING\n\
-   machine name to lookup\n"));
+  printf (_(UT_HOST_PORT), 'P', myport);
 
-        printf (_("\
- -T, --record_type=STRING\n\
-   record type to lookup (default: A)\n"));
+  printf ("-l, --lookup=STRING");
+    
+  printf ("\n");
 
-        printf (_("\
- -a, --expected_address=STRING\n\
-   an address expected to be in the answer section.\n\
-   if not set, uses whatever was in -l\n"));
+  printf (_("machine name to lookup"));
 
-       printf (_(UT_WARN_CRIT));
+  printf ("\n");
 
-       printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+  printf ("-T, --record_type=STRING");
 
-       printf (_(UT_VERBOSE));
+  printf ("\n");
 
-       printf (_(UT_SUPPORT));
+  printf (_("record type to lookup (default: A)"));
+
+  printf ("\n");
+
+  printf ("-a, --expected_address=STRING");
+
+  printf ("\n");
+
+  printf (_("an address expected to be in the answer section.if not set, uses whatever was in -l"));
+
+  printf ("\n");
+
+  printf (_(UT_WARN_CRIT));
+
+  printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+
+  printf (_(UT_VERBOSE));
+
+  printf (_(UT_SUPPORT));
 }
 
 
@@ -327,8 +340,8 @@ print_help (void)
 void
 print_usage (void)
 {
-       printf ("\
-Usage: %s -H host -l lookup [-p <server port>] [-T <query type>]\n\
-              [-w <warning interval>] [-c <critical interval>] [-t <timeout>]\n\
-              [-a <expected answer address>] [-v]\n", progname);
+  printf (_("Usage:"));
+  printf ("%s -H host -l lookup [-p <server port>] [-T <query type>]", progname);
+  printf ("          [-w <warning interval>] [-c <critical interval>] [-t <timeout>]");
+  printf ("          [-a <expected answer address>] [-v]\n");
 }
index 81dd6c73def9d18944326bf3d276413472e81de6..3a5f47610434d4737b138930a6c7ca4e8d9297ba 100644 (file)
@@ -19,9 +19,9 @@
 *****************************************************************************/
 
 const char *progname = "check_disk";
-const char *program_name = "check_disk";       /* Required for coreutils libs */
+const char *program_name = "check_disk";  /* Required for coreutils libs */
 const char *revision = "$Revision$";
-const char *copyright = "1999-2004";
+const char *copyright = "1999-2005";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
  /*
@@ -149,92 +149,92 @@ static struct mount_entry *mount_list;
 int
 main (int argc, char **argv)
 {
-       double usp = -1.0, uisp = -1.0;
-       int result = STATE_UNKNOWN;
-       int disk_result = STATE_UNKNOWN;
-       char file_system[MAX_INPUT_BUFFER];
-       char *output;
-       char *details;
-       char *perf;
-       uintmax_t psize;
-       float free_space, free_space_pct, total_space, inode_space_pct;
-
-       struct mount_entry *me;
-       struct fs_usage fsp;
-       struct name_list *temp_list;
-
-       output = strdup (" - free space:");
-       details = strdup ("");
-       perf = strdup ("");
-
-       setlocale (LC_ALL, "");
-       bindtextdomain (PACKAGE, LOCALEDIR);
-       textdomain (PACKAGE);
-
-       mount_list = read_filesystem_list (0);
-
-       if (process_arguments (argc, argv) == ERROR)
-               usage4 (_("Could not parse arguments"));
-
-       /* if a list of paths has been selected, preseed the list with
-        * the longest matching filesystem name by iterating across
-        * the mountlist once ahead of time.  this will allow a query on
-        * "/var/log" to return information about "/var" if no "/var/log"
-        * filesystem exists, etc.  this is the default behavior already
-        * with df-based checks, but for systems with their own space
-        * checking routines, this should make them more consistent.
-        */
-       if(path_select_list){
-               for (me = mount_list; me; me = me->me_next) {
-                       walk_name_list(path_select_list, me->me_mountdir);
-                       walk_name_list(path_select_list, me->me_devname);
-               }
-               /* now pretend we never saw anything, but keep found_len.
-                * thus future searches will only match the best match */
-               for (temp_list = path_select_list; temp_list; temp_list=temp_list->name_next){
-                       temp_list->found=0;
-               }
-       }
-
-       /* for every mount entry */
-       for (me = mount_list; me; me = me->me_next) {
-               /* if there's a list of paths to select, the current mount
-                * entry matches in path or device name, get fs usage */
-               if (path_select_list &&
-                    (walk_name_list (path_select_list, me->me_mountdir) ||
-                     walk_name_list (path_select_list, me->me_devname) ) ) {
-                       get_fs_usage (me->me_mountdir, me->me_devname, &fsp);
-               /* else if there's a list of paths/devices to select (but
-                * we didn't match above) skip to the next mount entry */
-               } else if (dev_select_list || path_select_list) {
-                       continue;
-               /* skip remote filesystems if we're not interested in them */
-               } else if (me->me_remote && show_local_fs) {
-                       continue;
-               /* skip pseudo fs's if we haven't asked for all fs's */
-               } else if (me->me_dummy && !show_all_fs) {
-                       continue;
-               /* skip excluded fstypes */
-               } else if (fs_exclude_list && walk_name_list (fs_exclude_list, me->me_type)) {
-                       continue;
-               /* skip excluded fs's */        
-               } else if (dp_exclude_list && 
-                        (walk_name_list (dp_exclude_list, me->me_devname) ||
-                         walk_name_list (dp_exclude_list, me->me_mountdir))) {
-                       continue;
-               /* otherwise, get fs usage */
-               } else {
-                       get_fs_usage (me->me_mountdir, me->me_devname, &fsp);
-               }
-
-               if (fsp.fsu_blocks && strcmp ("none", me->me_mountdir)) {
-                       usp = (double)(fsp.fsu_blocks - fsp.fsu_bavail) * 100 / fsp.fsu_blocks;
+  double usp = -1.0, uisp = -1.0;
+  int result = STATE_UNKNOWN;
+  int disk_result = STATE_UNKNOWN;
+  char file_system[MAX_INPUT_BUFFER];
+  char *output;
+  char *details;
+  char *perf;
+  uintmax_t psize;
+  float free_space, free_space_pct, total_space, inode_space_pct;
+
+  struct mount_entry *me;
+  struct fs_usage fsp;
+  struct name_list *temp_list;
+
+  output = strdup (" - free space:");
+  details = strdup ("");
+  perf = strdup ("");
+
+  setlocale (LC_ALL, "");
+  bindtextdomain (PACKAGE, LOCALEDIR);
+  textdomain (PACKAGE);
+
+  mount_list = read_filesystem_list (0);
+
+  if (process_arguments (argc, argv) == ERROR)
+    usage4 (_("Could not parse arguments"));
+
+  /* if a list of paths has been selected, preseed the list with
+   * the longest matching filesystem name by iterating across
+   * the mountlist once ahead of time.  this will allow a query on
+   * "/var/log" to return information about "/var" if no "/var/log"
+   * filesystem exists, etc.  this is the default behavior already
+   * with df-based checks, but for systems with their own space
+   * checking routines, this should make them more consistent.
+   */
+  if(path_select_list){
+    for (me = mount_list; me; me = me->me_next) {
+      walk_name_list(path_select_list, me->me_mountdir);
+      walk_name_list(path_select_list, me->me_devname);
+    }
+    /* now pretend we never saw anything, but keep found_len.
+     * thus future searches will only match the best match */
+    for (temp_list = path_select_list; temp_list; temp_list=temp_list->name_next){
+      temp_list->found=0;
+    }
+  }
+
+  /* for every mount entry */
+  for (me = mount_list; me; me = me->me_next) {
+    /* if there's a list of paths to select, the current mount
+     * entry matches in path or device name, get fs usage */
+    if (path_select_list &&
+         (walk_name_list (path_select_list, me->me_mountdir) ||
+          walk_name_list (path_select_list, me->me_devname) ) ) {
+      get_fs_usage (me->me_mountdir, me->me_devname, &fsp);
+    /* else if there's a list of paths/devices to select (but
+     * we didn't match above) skip to the next mount entry */
+    } else if (dev_select_list || path_select_list) {
+      continue;
+    /* skip remote filesystems if we're not interested in them */
+    } else if (me->me_remote && show_local_fs) {
+      continue;
+    /* skip pseudo fs's if we haven't asked for all fs's */
+    } else if (me->me_dummy && !show_all_fs) {
+      continue;
+    /* skip excluded fstypes */
+    } else if (fs_exclude_list && walk_name_list (fs_exclude_list, me->me_type)) {
+      continue;
+    /* skip excluded fs's */  
+    } else if (dp_exclude_list && 
+             (walk_name_list (dp_exclude_list, me->me_devname) ||
+              walk_name_list (dp_exclude_list, me->me_mountdir))) {
+      continue;
+    /* otherwise, get fs usage */
+    } else {
+      get_fs_usage (me->me_mountdir, me->me_devname, &fsp);
+    }
+
+    if (fsp.fsu_blocks && strcmp ("none", me->me_mountdir)) {
+      usp = (double)(fsp.fsu_blocks - fsp.fsu_bavail) * 100 / fsp.fsu_blocks;
                         uisp = (double)(fsp.fsu_files - fsp.fsu_ffree) * 100 / fsp.fsu_files;
-                       disk_result = check_disk (usp, fsp.fsu_bavail, uisp);
+      disk_result = check_disk (usp, fsp.fsu_bavail, uisp);
 
 
-                       result = max_state (disk_result, result);
-                       psize = fsp.fsu_blocks*fsp.fsu_blocksize/mult;
+      result = max_state (disk_result, result);
+      psize = fsp.fsu_blocks*fsp.fsu_blocksize/mult;
 
 
                         /* Moved this computation up here so we can add it
@@ -242,56 +242,56 @@ main (int argc, char **argv)
                         inode_space_pct = (float)fsp.fsu_ffree*100/fsp.fsu_files;
 
 
-                       asprintf (&perf, "%s %s", perf,
-                                 perfdata ((!strcmp(file_system, "none") || display_mntp) ? me->me_devname : me->me_mountdir,
-                                           psize-(fsp.fsu_bavail*fsp.fsu_blocksize/mult), units,
-                                           TRUE, min ((uintmax_t)psize-(uintmax_t)w_df, (uintmax_t)((1.0-w_dfp/100.0)*psize)),
-                                           TRUE, min ((uintmax_t)psize-(uintmax_t)c_df, (uintmax_t)((1.0-c_dfp/100.0)*psize)),
+      asprintf (&perf, "%s %s", perf,
+                perfdata ((!strcmp(file_system, "none") || display_mntp) ? me->me_devname : me->me_mountdir,
+                          psize-(fsp.fsu_bavail*fsp.fsu_blocksize/mult), units,
+                          TRUE, min ((uintmax_t)psize-(uintmax_t)w_df, (uintmax_t)((1.0-w_dfp/100.0)*psize)),
+                          TRUE, min ((uintmax_t)psize-(uintmax_t)c_df, (uintmax_t)((1.0-c_dfp/100.0)*psize)),
                                             TRUE, inode_space_pct,
 
-                                           TRUE, psize));
-                       if (disk_result==STATE_OK && erronly && !verbose)
-                               continue;
-
-                       free_space = (float)fsp.fsu_bavail*fsp.fsu_blocksize/mult;
-                       free_space_pct = (float)fsp.fsu_bavail*100/fsp.fsu_blocks;
-                       total_space = (float)fsp.fsu_blocks*fsp.fsu_blocksize/mult;
-                       if (disk_result!=STATE_OK || verbose>=0)
-                               asprintf (&output, ("%s %s %.0f %s (%.0f%% inode=%.0f%%);"),
-                                         output,
-                                         (!strcmp(file_system, "none") || display_mntp) ? me->me_devname : me->me_mountdir,
-                                         free_space,
-                                         units,
-                                         free_space_pct,
-                                         inode_space_pct);
-
-                       asprintf (&details, _("%s\n\
+                          TRUE, psize));
+      if (disk_result==STATE_OK && erronly && !verbose)
+        continue;
+
+      free_space = (float)fsp.fsu_bavail*fsp.fsu_blocksize/mult;
+      free_space_pct = (float)fsp.fsu_bavail*100/fsp.fsu_blocks;
+      total_space = (float)fsp.fsu_blocks*fsp.fsu_blocksize/mult;
+      if (disk_result!=STATE_OK || verbose>=0)
+        asprintf (&output, ("%s %s %.0f %s (%.0f%% inode=%.0f%%);"),
+                  output,
+                  (!strcmp(file_system, "none") || display_mntp) ? me->me_devname : me->me_mountdir,
+                  free_space,
+                  units,
+            free_space_pct,
+            inode_space_pct);
+
+      asprintf (&details, _("%s\n\
 %.0f of %.0f %s (%.0f%% inode=%.0f%%) free on %s (type %s mounted on %s) warn:%lu crit:%lu warn%%:%.0f%% crit%%:%.0f%%"),
-                                 details, free_space, total_space, units, free_space_pct, inode_space_pct,
-                                 me->me_devname, me->me_type, me->me_mountdir,
-                                 (unsigned long)w_df, (unsigned long)c_df, w_dfp, c_dfp);
+                details, free_space, total_space, units, free_space_pct, inode_space_pct,
+                me->me_devname, me->me_type, me->me_mountdir,
+                (unsigned long)w_df, (unsigned long)c_df, w_dfp, c_dfp);
 
-               }
+    }
 
-       }
+  }
 
-       asprintf (&output, "%s|%s", output, perf);
+  asprintf (&output, "%s|%s", output, perf);
 
-       if (verbose > 2)
-               asprintf (&output, "%s%s", output, details);
+  if (verbose > 2)
+    asprintf (&output, "%s%s", output, details);
 
-       /* Override result if paths specified and not found */
-       temp_list = path_select_list;
-       while (temp_list) {
-               if (!temp_list->found) {
-                       asprintf (&output, _("%s [%s not found]"), output, temp_list->name);
-                       result = STATE_CRITICAL;
-               }
-               temp_list = temp_list->name_next;
-       }
+  /* Override result if paths specified and not found */
+  temp_list = path_select_list;
+  while (temp_list) {
+    if (!temp_list->found) {
+      asprintf (&output, _("%s [%s not found]"), output, temp_list->name);
+      result = STATE_CRITICAL;
+    }
+    temp_list = temp_list->name_next;
+  }
 
-       printf ("DISK %s%s\n", state_text (result), output);
-       return result;
+  printf ("DISK %s%s\n", state_text (result), output);
+  return result;
 }
 
 
@@ -300,106 +300,106 @@ main (int argc, char **argv)
 int
 process_arguments (int argc, char **argv)
 {
-       int c;
-       struct name_list *se;
-       struct name_list **pathtail = &path_select_list;
-       struct name_list **fstail = &fs_exclude_list;
-       struct name_list **dptail = &dp_exclude_list;
-       struct name_list *temp_list;
-       int result = OK;
-
-       unsigned long l;
-
-       int option = 0;
-       static struct option longopts[] = {
-               {"timeout", required_argument, 0, 't'},
-               {"warning", required_argument, 0, 'w'},
-               {"critical", required_argument, 0, 'c'},
-               {"iwarning", required_argument, 0, 'W'},
-               /* Dang, -C is taken. We might want to reshuffle this. */
-               {"icritical", required_argument, 0, 'K'},
-               {"local", required_argument, 0, 'l'},
-               {"kilobytes", required_argument, 0, 'k'},
-               {"megabytes", required_argument, 0, 'm'},
-               {"units", required_argument, 0, 'u'},
-               {"path", required_argument, 0, 'p'},
-               {"partition", required_argument, 0, 'p'},
-               {"exclude_device", required_argument, 0, 'x'},
-               {"exclude-type", required_argument, 0, 'X'},
-               {"mountpoint", no_argument, 0, 'M'},
-               {"errors-only", no_argument, 0, 'e'},
-               {"verbose", no_argument, 0, 'v'},
-               {"quiet", no_argument, 0, 'q'},
-               {"clear", no_argument, 0, 'C'},
-               {"version", no_argument, 0, 'V'},
-               {"help", no_argument, 0, 'h'},
-               {0, 0, 0, 0}
-       };
-
-       if (argc < 2)
-               return ERROR;
-
-       se = (struct name_list *) malloc (sizeof (struct name_list));
-       se->name = strdup ("iso9660");
-       se->name_next = NULL;
-       se->found = 0;
-       se->found_len = 0;
-       *fstail = se;
-       fstail = &se->name_next;
-
-       for (c = 1; c < argc; c++)
-               if (strcmp ("-to", argv[c]) == 0)
-                       strcpy (argv[c], "-t");
-
-       while (1) {
-               c = getopt_long (argc, argv, "+?VqhveCt:c:w:K:W:u:p:x:X:mklM", longopts, &option);
-
-               if (c == -1 || c == EOF)
-                       break;
-
-               switch (c) {
-               case 't':                                                                       /* timeout period */
-                       if (is_integer (optarg)) {
-                               timeout_interval = atoi (optarg);
-                               break;
-                       }
-                       else {
-                               usage2 (_("Timeout interval must be a positive integer"), optarg);
-                       }
-               case 'w':                                                                       /* warning threshold */
-                       if (is_intnonneg (optarg)) {
-                               w_df = atoi (optarg);
-                               break;
-                       }
-                       else if (strpbrk (optarg, ",:") &&
-                                                        strstr (optarg, "%") &&
-                                                        sscanf (optarg, "%lu%*[:,]%lf%%", &l, &w_dfp) == 2) {
-                               w_df = (uintmax_t)l;
-                               break;
-                       }
-                       else if (strstr (optarg, "%") && sscanf (optarg, "%lf%%", &w_dfp) == 1) {
-                               break;
-                       }
-                       else {
-                               usage4 (_("Warning threshold must be integer or percentage!"));
-                       }
-               case 'c':                                                                       /* critical threshold */
-                       if (is_intnonneg (optarg)) {
-                               c_df = atoi (optarg);
-                               break;
-                       }
-                       else if (strpbrk (optarg, ",:") &&
-                                                        strstr (optarg, "%") &&
-                                                        sscanf (optarg, "%lu%*[,:]%lf%%", &l, &c_dfp) == 2) {
-                               c_df = (uintmax_t)l;
-                               break;
-                       }
-                       else if (strstr (optarg, "%") && sscanf (optarg, "%lf%%", &c_dfp) == 1) {
-                               break;
-                       }
-                       else {
-                               usage4 (_("Critical threshold must be integer or percentage!"));
-                       }
+  int c;
+  struct name_list *se;
+  struct name_list **pathtail = &path_select_list;
+  struct name_list **fstail = &fs_exclude_list;
+  struct name_list **dptail = &dp_exclude_list;
+  struct name_list *temp_list;
+  int result = OK;
+
+  unsigned long l;
+
+  int option = 0;
+  static struct option longopts[] = {
+    {"timeout", required_argument, 0, 't'},
+    {"warning", required_argument, 0, 'w'},
+    {"critical", required_argument, 0, 'c'},
+    {"iwarning", required_argument, 0, 'W'},
+    /* Dang, -C is taken. We might want to reshuffle this. */
+    {"icritical", required_argument, 0, 'K'},
+    {"local", required_argument, 0, 'l'},
+    {"kilobytes", required_argument, 0, 'k'},
+    {"megabytes", required_argument, 0, 'm'},
+    {"units", required_argument, 0, 'u'},
+    {"path", required_argument, 0, 'p'},
+    {"partition", required_argument, 0, 'p'},
+    {"exclude_device", required_argument, 0, 'x'},
+    {"exclude-type", required_argument, 0, 'X'},
+    {"mountpoint", no_argument, 0, 'M'},
+    {"errors-only", no_argument, 0, 'e'},
+    {"verbose", no_argument, 0, 'v'},
+    {"quiet", no_argument, 0, 'q'},
+    {"clear", no_argument, 0, 'C'},
+    {"version", no_argument, 0, 'V'},
+    {"help", no_argument, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  if (argc < 2)
+    return ERROR;
+
+  se = (struct name_list *) malloc (sizeof (struct name_list));
+  se->name = strdup ("iso9660");
+  se->name_next = NULL;
+  se->found = 0;
+  se->found_len = 0;
+  *fstail = se;
+  fstail = &se->name_next;
+
+  for (c = 1; c < argc; c++)
+    if (strcmp ("-to", argv[c]) == 0)
+      strcpy (argv[c], "-t");
+
+  while (1) {
+    c = getopt_long (argc, argv, "+?VqhveCt:c:w:K:W:u:p:x:X:mklM", longopts, &option);
+
+    if (c == -1 || c == EOF)
+      break;
+
+    switch (c) {
+    case 't':                 /* timeout period */
+      if (is_integer (optarg)) {
+        timeout_interval = atoi (optarg);
+        break;
+      }
+      else {
+        usage2 (_("Timeout interval must be a positive integer"), optarg);
+      }
+    case 'w':                 /* warning threshold */
+      if (is_intnonneg (optarg)) {
+        w_df = atoi (optarg);
+        break;
+      }
+      else if (strpbrk (optarg, ",:") &&
+               strstr (optarg, "%") &&
+               sscanf (optarg, "%lu%*[:,]%lf%%", &l, &w_dfp) == 2) {
+        w_df = (uintmax_t)l;
+        break;
+      }
+      else if (strstr (optarg, "%") && sscanf (optarg, "%lf%%", &w_dfp) == 1) {
+        break;
+      }
+      else {
+        usage4 (_("Warning threshold must be integer or percentage!"));
+      }
+    case 'c':                 /* critical threshold */
+      if (is_intnonneg (optarg)) {
+        c_df = atoi (optarg);
+        break;
+      }
+      else if (strpbrk (optarg, ",:") &&
+               strstr (optarg, "%") &&
+               sscanf (optarg, "%lu%*[,:]%lf%%", &l, &c_dfp) == 2) {
+        c_df = (uintmax_t)l;
+        break;
+      }
+      else if (strstr (optarg, "%") && sscanf (optarg, "%lf%%", &c_dfp) == 1) {
+        break;
+      }
+      else {
+        usage4 (_("Critical threshold must be integer or percentage!"));
+      }
 
 
                 case 'W':                                                                       /* warning inode threshold */
@@ -407,71 +407,71 @@ process_arguments (int argc, char **argv)
                         break;
                         }
                         else {
-                               usage (_("Warning inode threshold must be percentage!\n"));
-                       }
+                      usage (_("Warning inode threshold must be percentage!\n"));
+                  }
                 case 'K':                                                                       /* kritical inode threshold */
                         if (strstr (optarg, "%") && sscanf (optarg, "%lf%%", &c_idfp) == 1) {
                         break;
                         }
                         else {
-                               usage (_("Critical inode threshold must be percentage!\n"));
+                      usage (_("Critical inode threshold must be percentage!\n"));
                        }
-               case 'u':
-                       if (units)
-                               free(units);
-                       if (! strcmp (optarg, "bytes")) {
-                               mult = (uintmax_t)1;
-                               units = strdup ("B");
-                       } else if (! strcmp (optarg, "kB")) {
-                               mult = (uintmax_t)1024;
-                               units = strdup ("kB");
-                       } else if (! strcmp (optarg, "MB")) {
-                               mult = (uintmax_t)1024 * 1024;
-                               units = strdup ("MB");
-                       } else if (! strcmp (optarg, "GB")) {
-                               mult = (uintmax_t)1024 * 1024 * 1024;
-                               units = strdup ("GB");
-                       } else if (! strcmp (optarg, "TB")) {
-                               mult = (uintmax_t)1024 * 1024 * 1024 * 1024;
-                               units = strdup ("TB");
-                       } else {
-                               die (STATE_UNKNOWN, _("unit type %s not known\n"), optarg);
-                       }
-                       if (units == NULL)
-                               die (STATE_UNKNOWN, _("failed allocating storage for '%s'\n"), "units");
-                       break;
-               case 'k': /* display mountpoint */
-                       mult = 1024;
-                       if (units)
-                               free(units);
-                       units = strdup ("kB");
-                       break;
-               case 'm': /* display mountpoint */
-                       mult = 1024 * 1024;
-                       if (units)
-                               free(units);
-                       units = strdup ("MB");
-                       break;
-               case 'l':
-                       show_local_fs = 1;                      
-                       break;
-               case 'p':                                                                       /* select path */
-                       se = (struct name_list *) malloc (sizeof (struct name_list));
-                       se->name = optarg;
-                       se->name_next = NULL;
-                       se->w_df = w_df;
-                       se->c_df = c_df;
-                       se->w_dfp = w_dfp;
-                       se->c_dfp = c_dfp;
-                       se->found = 0;
-                       se->found_len = 0;
-                       *pathtail = se;
-                       pathtail = &se->name_next;
-                       break;
-               case 'x':                                                                       /* exclude path or partition */
-                       se = (struct name_list *) malloc (sizeof (struct name_list));
-                       se->name = optarg;
-                       se->name_next = NULL;
+    case 'u':
+      if (units)
+        free(units);
+      if (! strcmp (optarg, "bytes")) {
+        mult = (uintmax_t)1;
+        units = strdup ("B");
+      } else if (! strcmp (optarg, "kB")) {
+        mult = (uintmax_t)1024;
+        units = strdup ("kB");
+      } else if (! strcmp (optarg, "MB")) {
+        mult = (uintmax_t)1024 * 1024;
+        units = strdup ("MB");
+      } else if (! strcmp (optarg, "GB")) {
+        mult = (uintmax_t)1024 * 1024 * 1024;
+        units = strdup ("GB");
+      } else if (! strcmp (optarg, "TB")) {
+        mult = (uintmax_t)1024 * 1024 * 1024 * 1024;
+        units = strdup ("TB");
+      } else {
+        die (STATE_UNKNOWN, _("unit type %s not known\n"), optarg);
+      }
+      if (units == NULL)
+        die (STATE_UNKNOWN, _("failed allocating storage for '%s'\n"), "units");
+      break;
+    case 'k': /* display mountpoint */
+      mult = 1024;
+      if (units)
+        free(units);
+      units = strdup ("kB");
+      break;
+    case 'm': /* display mountpoint */
+      mult = 1024 * 1024;
+      if (units)
+        free(units);
+      units = strdup ("MB");
+      break;
+    case 'l':
+      show_local_fs = 1;      
+      break;
+    case 'p':                 /* select path */
+      se = (struct name_list *) malloc (sizeof (struct name_list));
+      se->name = optarg;
+      se->name_next = NULL;
+      se->w_df = w_df;
+      se->c_df = c_df;
+      se->w_dfp = w_dfp;
+      se->c_dfp = c_dfp;
+      se->found = 0;
+      se->found_len = 0;
+      *pathtail = se;
+      pathtail = &se->name_next;
+      break;
+    case 'x':                 /* exclude path or partition */
+      se = (struct name_list *) malloc (sizeof (struct name_list));
+      se->name = optarg;
+      se->name_next = NULL;
 
                         /* If you don't clear the w_fd etc values here, they
                          * get processed when you walk the list and assigned
@@ -481,15 +481,15 @@ process_arguments (int argc, char **argv)
                         se->c_df = 0;
                         se->w_dfp = 0;
                         se->c_dfp = 0;
-                       se->found = 0;
-                       se->found_len = 0;
-                       *dptail = se;
-                       dptail = &se->name_next;
-                       break;
-               case 'X':                                                                       /* exclude file system type */
-                       se = (struct name_list *) malloc (sizeof (struct name_list));
-                       se->name = optarg;
-                       se->name_next = NULL;
+      se->found = 0;
+      se->found_len = 0;
+      *dptail = se;
+      dptail = &se->name_next;
+      break;
+    case 'X':                 /* exclude file system type */
+      se = (struct name_list *) malloc (sizeof (struct name_list));
+      se->name = optarg;
+      se->name_next = NULL;
                         /* If you don't clear the w_fd etc values here, they
                          * get processed when you walk the list and assigned
                          * to the global w_df!
@@ -498,78 +498,78 @@ process_arguments (int argc, char **argv)
                         se->c_df = 0;
                         se->w_dfp = 0;
                         se->c_dfp = 0;
-                       se->found = 0;
-                       se->found_len = 0;
-                       *fstail = se;
-                       fstail = &se->name_next;
-                       break;
-               case 'v':                                                                       /* verbose */
-                       verbose++;
-                       break;
-               case 'q':                                                                       /* verbose */
-                       verbose--;
-                       break;
-               case 'e':
-                       erronly = TRUE;
-                       break;
-               case 'M': /* display mountpoint */
-                       display_mntp = TRUE;
-                       break;
-               case 'C':
-                       w_df = 0;
-                       c_df = 0;
-                       w_dfp = -1.0;
-                       c_dfp = -1.0;
-                       break;
-               case 'V':                                                                       /* version */
-                       print_revision (progname, revision);
-                       exit (STATE_OK);
-               case 'h':                                                                       /* help */
-                       print_help ();
-                       exit (STATE_OK);
-               case '?':                                                                       /* help */
-                       usage2 (_("Unknown argument"), optarg);
-               }
-       }
-
-       /* Support for "check_disk warn crit [fs]" with thresholds at used level */
-       c = optind;
-       if (w_dfp < 0 && argc > c && is_intnonneg (argv[c]))
-               w_dfp = (100.0 - atof (argv[c++]));
-
-       if (c_dfp < 0 && argc > c && is_intnonneg (argv[c]))
-               c_dfp = (100.0 - atof (argv[c++]));
-
-       if (argc > c && path == NULL) {
-               se = (struct name_list *) malloc (sizeof (struct name_list));
-               se->name = strdup (argv[c++]);
-               se->name_next = NULL;
-               se->w_df = w_df;
-               se->c_df = c_df;
-               se->w_dfp = w_dfp;
-               se->c_dfp = c_dfp;
-               se->found =0;
-               se->found_len = 0;
-               *pathtail = se;
-       }
-
-       if (path_select_list) {
-               temp_list = path_select_list;
-               while (temp_list) {
-                       if (validate_arguments (temp_list->w_df,
-                                                     temp_list->c_df,
-                                                     temp_list->w_dfp,
-                                                     temp_list->c_dfp,
-                                                     temp_list->w_idfp,
-                                                     temp_list->c_idfp,
-                                                     temp_list->name) == ERROR)
-                               result = ERROR;
-                       temp_list = temp_list->name_next;
-               }
-               return result;
-       } else {
-               return validate_arguments (w_df, c_df, w_dfp, c_dfp, w_idfp, c_idfp, NULL);
-       }
+      se->found = 0;
+      se->found_len = 0;
+      *fstail = se;
+      fstail = &se->name_next;
+      break;
+    case 'v':                 /* verbose */
+      verbose++;
+      break;
+    case 'q':                 /* verbose */
+      verbose--;
+      break;
+    case 'e':
+      erronly = TRUE;
+      break;
+    case 'M': /* display mountpoint */
+      display_mntp = TRUE;
+      break;
+    case 'C':
+      w_df = 0;
+      c_df = 0;
+      w_dfp = -1.0;
+      c_dfp = -1.0;
+      break;
+    case 'V':                 /* version */
+      print_revision (progname, revision);
+      exit (STATE_OK);
+    case 'h':                 /* help */
+      print_help ();
+      exit (STATE_OK);
+    case '?':                 /* help */
+      usage (_("Unknown argument"));
+    }
+  }
+
+  /* Support for "check_disk warn crit [fs]" with thresholds at used level */
+  c = optind;
+  if (w_dfp < 0 && argc > c && is_intnonneg (argv[c]))
+    w_dfp = (100.0 - atof (argv[c++]));
+
+  if (c_dfp < 0 && argc > c && is_intnonneg (argv[c]))
+    c_dfp = (100.0 - atof (argv[c++]));
+
+  if (argc > c && path == NULL) {
+    se = (struct name_list *) malloc (sizeof (struct name_list));
+    se->name = strdup (argv[c++]);
+    se->name_next = NULL;
+    se->w_df = w_df;
+    se->c_df = c_df;
+    se->w_dfp = w_dfp;
+    se->c_dfp = c_dfp;
+    se->found =0;
+    se->found_len = 0;
+    *pathtail = se;
+  }
+
+  if (path_select_list) {
+    temp_list = path_select_list;
+    while (temp_list) {
+      if (validate_arguments (temp_list->w_df,
+                              temp_list->c_df,
+                              temp_list->w_dfp,
+                              temp_list->c_dfp,
+                              temp_list->w_idfp,
+                              temp_list->c_idfp,
+                              temp_list->name) == ERROR)
+        result = ERROR;
+      temp_list = temp_list->name_next;
+    }
+    return result;
+  } else {
+    return validate_arguments (w_df, c_df, w_dfp, c_dfp, w_idfp, c_idfp, NULL);
+  }
 }
 
 
@@ -577,12 +577,12 @@ process_arguments (int argc, char **argv)
 void
 print_path (const char *mypath) 
 {
-       if (mypath == NULL)
-               printf ("\n");
-       else
-               printf (_(" for %s\n"), mypath);
+  if (mypath == NULL)
+    printf ("\n");
+  else
+    printf (_(" for %s\n"), mypath);
 
-       return;
+  return;
 }
 
 
@@ -590,40 +590,40 @@ print_path (const char *mypath)
 int
 validate_arguments (uintmax_t w, uintmax_t c, double wp, double cp, double iwp, double icp, char *mypath)
 {
-       if (w < 0 && c < 0 && wp < 0.0 && cp < 0.0) {
-               printf (_("INPUT ERROR: No thresholds specified"));
-               print_path (mypath);
-               return ERROR;
-       }
-       else if ((wp >= 0.0 || cp >= 0.0) &&
-                (wp < 0.0 || cp < 0.0 || wp > 100.0 || cp > 100.0 || cp > wp)) {
-               printf (_("\
+  if (w < 0 && c < 0 && wp < 0.0 && cp < 0.0) {
+    printf (_("INPUT ERROR: No thresholds specified"));
+    print_path (mypath);
+    return ERROR;
+  }
+  else if ((wp >= 0.0 || cp >= 0.0) &&
+           (wp < 0.0 || cp < 0.0 || wp > 100.0 || cp > 100.0 || cp > wp)) {
+    printf (_("\
 INPUT ERROR: C_DFP (%f) should be less than W_DFP (%.1f) and both should be between zero and 100 percent, inclusive"),
-                       cp, wp);
-               print_path (mypath);
-               return ERROR;
-       }
-       else if ((iwp >= 0.0 || icp >= 0.0) &&
-                (iwp < 0.0 || icp < 0.0 || iwp > 100.0 || icp > 100.0 || icp > iwp)) {
-               printf (_("\
+            cp, wp);
+    print_path (mypath);
+    return ERROR;
+  }
+  else if ((iwp >= 0.0 || icp >= 0.0) &&
+           (iwp < 0.0 || icp < 0.0 || iwp > 100.0 || icp > 100.0 || icp > iwp)) {
+    printf (_("\
 INPUT ERROR: C_IDFP (%f) should be less than W_IDFP (%.1f) and both should be between zero and 100 percent, inclusive"),
-                       icp, iwp);
-               print_path (mypath);
-               return ERROR;
-       }
-       else if ((w > 0 || c > 0) && (w == 0 || c == 0 || c > w)) {
-               printf (_("\
+            icp, iwp);
+    print_path (mypath);
+    return ERROR;
+  }
+  else if ((w > 0 || c > 0) && (w == 0 || c == 0 || c > w)) {
+    printf (_("\
 INPUT ERROR: C_DF (%lu) should be less than W_DF (%lu) and both should be greater than zero"),
-                       (unsigned long)c, (unsigned long)w);
-               print_path (mypath);
-               return ERROR;
-       }
-       
-       if (units == NULL) {
-               units = strdup ("MB");
-               mult = (uintmax_t)1024 * 1024;
-       }
-       return OK;
+            (unsigned long)c, (unsigned long)w);
+    print_path (mypath);
+    return ERROR;
+  }
+  
+  if (units == NULL) {
+    units = strdup ("MB");
+    mult = (uintmax_t)1024 * 1024;
+  }
+  return OK;
 }
 
 
@@ -647,8 +647,8 @@ check_disk (double usp, uintmax_t free_disk, double uisp)
        else if (w_df > 0 && free_disk <= w_df)
                result = STATE_WARNING;
        else if (usp >= 0.0)
-               result = STATE_OK;
-       return result;
+    result = STATE_OK;
+  return result;
 }
 
 
@@ -656,26 +656,26 @@ check_disk (double usp, uintmax_t free_disk, double uisp)
 int
 walk_name_list (struct name_list *list, const char *name)
 {
-       int name_len;
-       name_len = strlen(name);
-       while (list) {
-               /* if the paths match up to the length of the mount path,
-                * AND if the mount path name is longer than the longest
-                * found match, we have a new winner */
-               if (name_len >= list->found_len && 
-                   ! strncmp(list->name, name, name_len)) {
-                       list->found = 1;
-                       list->found_len = name_len;
-                       /* if required for name_lists that have not saved w_df, etc (eg exclude lists) */
-                       if (list->w_df) w_df = list->w_df;
-                       if (list->c_df) c_df = list->c_df;
-                       if (list->w_dfp>=0.0) w_dfp = list->w_dfp;
-                       if (list->c_dfp>=0.0) c_dfp = list->c_dfp;
-                       return TRUE;
-               }
-               list = list->name_next;
-       }
-       return FALSE;
+  int name_len;
+  name_len = strlen(name);
+  while (list) {
+    /* if the paths match up to the length of the mount path,
+     * AND if the mount path name is longer than the longest
+     * found match, we have a new winner */
+    if (name_len >= list->found_len && 
+        ! strncmp(list->name, name, name_len)) {
+      list->found = 1;
+      list->found_len = name_len;
+      /* if required for name_lists that have not saved w_df, etc (eg exclude lists) */
+      if (list->w_df) w_df = list->w_df;
+      if (list->c_df) c_df = list->c_df;
+      if (list->w_dfp>=0.0) w_dfp = list->w_dfp;
+      if (list->c_dfp>=0.0) c_dfp = list->c_dfp;
+      return TRUE;
+    }
+    list = list->name_next;
+  }
+  return FALSE;
 }
 
 
@@ -683,68 +683,163 @@ walk_name_list (struct name_list *list, const char *name)
 void
 print_help (void)
 {
-       print_revision (progname, revision);
-
-       printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n");
-       printf (COPYRIGHT, copyright, email);
-
-       printf (_("\
-This plugin checks the amount of used disk space on a mounted file system\n\
-and generates an alert if free space is less than one of the threshold values.\n\n"));
-
-       print_usage ();
-
-       printf (_(UT_HELP_VRSN));
-
-       printf (_("\
- -w, --warning=INTEGER\n\
-   Exit with WARNING status if less than INTEGER --units of disk are free\n\
- -w, --warning=PERCENT%%\n\
-   Exit with WARNING status if less than PERCENT of disk space is free\n\
- -W, --iwarning=PERCENT%%\n\
-   Exit with WARNING status if less than PERCENT of inode space is free\n\
- -K, --icritical=PERCENT%%\n\
-   Exit with CRITICAL status if less than PERCENT of inode space is free\n\
- -c, --critical=INTEGER\n\
-   Exit with CRITICAL status if less than INTEGER --units of disk are free\n\
- -c, --critical=PERCENT%%\n\
-   Exit with CRITCAL status if less than PERCENT of disk space is free\n\
- -C, --clear\n\
-    Clear thresholds\n"));
-
-       printf (_("\
- -u, --units=STRING\n\
-    Choose bytes, kB, MB, GB, TB (default: MB)\n\
- -k, --kilobytes\n\
-    Same as '--units kB'\n\
- -m, --megabytes\n\
-    Same as '--units MB'\n"));
-
-       printf (_("\
- -l, --local\n\
-    Only check local filesystems\n\
- -p, --path=PATH, --partition=PARTITION\n\
-    Path or partition (may be repeated)\n\
- -x, --exclude_device=PATH <STRING>\n\
-    Ignore device (only works if -p unspecified)\n\
- -X, --exclude-type=TYPE <STRING>\n\
-    Ignore all filesystems of indicated type (may be repeated)\n\
- -M, --mountpoint\n\
-    Display the mountpoint instead of the partition\n\
- -e, --errors-only\n\
-    Display only devices/mountpoints with errors\n"));
-
-       printf (_(UT_WARN_CRIT));
-
-       printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
-
-       printf (_(UT_VERBOSE));
-
-       printf ("%s", _("Examples:\n\
- check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /\n\
-   Checks /tmp and /var at 10%,5% and / at 100MB, 50MB\n"));
-
-       printf (_(UT_SUPPORT));
+  print_revision (progname, revision);
+
+  printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n");
+  printf (COPYRIGHT, copyright, email);
+
+  printf (_("This plugin checks the amount of used disk space on a mounted file system"));
+  printf (_("and generates an alert if free space is less than one of the threshold values"));
+
+  printf ("\n\n");
+
+  print_usage ();
+
+  printf (_(UT_HELP_VRSN));
+
+  printf ("  -w, --warning=INTEGER");
+  
+  printf ("\n");
+  
+  printf (_("exit with WARNING status if less than INTEGER units of disk are free"));
+  
+  printf ("  -w, --warning=PERCENT%%");
+  
+  printf ("\n");
+
+  printf (_("exit with WARNING status if less than PERCENT of disk space is free"));
+  
+  printf ("\n");
+
+  printf ("  -W, --iwarning=PERCENT%%");
+  
+  printf ("\n");
+
+  printf (_("exit with WARNING status if less than PERCENT of inode space is free"));
+  
+  printf ("\n");
+
+  printf ("  -K, --icritical=PERCENT%%");
+  
+  printf ("\n");
+
+  printf (_("exit with CRITICAL status if less than PERCENT of inode space is free"));
+  
+  printf ("\n");
+
+  printf ("  -c, --critical=INTEGER");
+  
+  printf ("\n");
+
+  printf (_("exit with CRITICAL status if less than INTEGER --units of disk are free"));
+  
+  printf ("\n");
+
+  printf ("  -c, --critical=PERCENT%%");
+  
+  printf ("\n");
+
+  printf (_("exit with CRITCAL status if less than PERCENT of disk space is free"));
+  
+  printf ("\n");
+
+  printf ("  -C, --clear");
+  
+  printf ("\n");
+
+  printf (_("clear thresholds"));
+
+  printf ("\n");
+
+  printf ("  -u, --units=STRING");
+  
+  printf ("\n");
+
+  printf (_("choose bytes, kB, MB, GB, TB (default: MB)"));
+  
+  printf ("\n");
+
+  printf ("  -k, --kilobytes");
+  
+  printf ("\n");
+
+  printf (_("same as '--units kB'"));
+  
+  printf ("\n");
+
+  printf ("  -m, --megabytes");
+  
+  printf ("\n");
+
+  printf (_("same as '--units MB'\n"));
+
+  printf ("  -l, --local");
+  
+  printf ("\n");
+
+  printf (_("only check local filesystems"));
+  
+  printf ("\n");
+
+  printf ("  -p, --path=PATH, --partition=PARTITION");
+  
+  printf ("\n");
+
+  printf (_("path or partition (may be repeated)"));
+  
+  printf ("\n");
+
+  printf ("  -x, --exclude_device=PATH <STRING>");
+  
+  printf ("\n");
+
+  printf (_("ignore device (only works if -p unspecified)"));
+  
+  printf ("\n");
+
+  printf ("  -X, --exclude-type=TYPE <STRING>");
+  
+  printf ("\n");
+
+  printf (_("ignore all filesystems of indicated type (may be repeated)"));
+  
+  printf ("\n");
+
+  printf ("-m, --mountpoint");
+  
+  printf ("\n");
+
+  printf (_("display the mountpoint instead of the partition"));
+  
+  printf ("\n");
+
+  printf ("-e, --errors-only");
+  
+  printf ("\n");
+
+  printf (_("display only devices/mountpoints with errors"));
+
+  printf ("\n");
+
+  printf (_(UT_WARN_CRIT));
+
+  printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+
+  printf (_(UT_VERBOSE));
+
+  printf (_("examples:"));
+  
+  printf ("\n");
+
+  printf ("check_disk -w 10% -c 5% -p /tmp -p /var -C -w 100000 -c 50000 -p /");
+  
+  printf ("\n");
+
+  printf (_("checks /tmp and /var at 10% and 5% and / at 100MB, 50MB"));
+  
+  printf ("\n");
+
+  printf (_(UT_SUPPORT));
 }
 
 
@@ -752,7 +847,7 @@ and generates an alert if free space is less than one of the threshold values.\n
 void
 print_usage (void)
 {
-       printf ("\
-Usage: %s -w limit -c limit [-p path | -x device] [-t timeout] [-m] [-e] [-W limit] [-K limit]\n\
-                  [-v] [-q]\n", progname);
+  printf (_("Usage:"));
+  printf (" %s -w limit -c limit [-p path | -x device] [-t timeout]", progname);
+  printf ("[-m] [-e] [-W limit] [-K limit] [-v] [-q]\n");
 }
index d6e8ca29d51d9fd5cfd1cb944ee6ac68f8267101..faa1e150721fa3d0d3d5e272a41d185473aaea03 100644 (file)
@@ -23,7 +23,7 @@
 
 const char *progname = "check_dns";
 const char *revision = "$Revision$";
-const char *copyright = "2000-2004";
+const char *copyright = "2000-2005";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
 #include "common.h"
@@ -49,156 +49,156 @@ int expect_authority = FALSE;
 int
 main (int argc, char **argv)
 {
-       char *command_line = NULL;
-       char input_buffer[MAX_INPUT_BUFFER];
-       char *address = NULL;
-       char *msg = NULL;
-       char *temp_buffer = NULL;
-       int non_authoritative = FALSE;
-       int result = STATE_UNKNOWN;
-       double elapsed_time;
-       long microsec;
-       struct timeval tv;
-       int multi_address;
-       int parse_address = FALSE; /* This flag scans for Address: but only after Name: */
-       output chld_out, chld_err;
-       size_t i;
-
-       setlocale (LC_ALL, "");
-       bindtextdomain (PACKAGE, LOCALEDIR);
-       textdomain (PACKAGE);
-
-       /* Set signal handling and alarm */
-       if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR) {
-               usage_va(_("Cannot catch SIGALRM"));
-       }
-
-       if (process_arguments (argc, argv) == ERROR) {
-               usage_va(_("Could not parse arguments"));
-       }
-
-       /* get the command to run */
-       asprintf (&command_line, "%s %s %s", NSLOOKUP_COMMAND, query_address, dns_server);
-
-       alarm (timeout_interval);
-       gettimeofday (&tv, NULL);
-
-       if (verbose)
-               printf ("%s\n", command_line);
-
-       /* run the command */
-       if((np_runcmd(command_line, &chld_out, &chld_err, 0)) != 0) {
-               msg = (char *)_("nslookup returned error status");
-               result = STATE_WARNING;
-       }
-
-       /* scan stdout */
-       for(i = 0; i < chld_out.lines; i++) {
-               if (verbose)
-                       puts(chld_out.line[i]);
-
-               if (strstr (chld_out.line[i], ".in-addr.arpa")) {
-                       if ((temp_buffer = strstr (chld_out.line[i], "name = ")))
-                               address = strdup (temp_buffer + 7);
-                       else {
-                               msg = (char *)_("Warning plugin error");
-                               result = STATE_WARNING;
-                       }
-               }
-
-               /* the server is responding, we just got the host name... */
-               if (strstr (chld_out.line[i], "Name:"))
-                       parse_address = TRUE;
-               else if (parse_address == TRUE && (strstr (chld_out.line[i], "Address:") ||
-                        strstr (chld_out.line[i], "Addresses:"))) {
-                       temp_buffer = index (chld_out.line[i], ':');
-                       temp_buffer++;
-
-                       /* Strip leading spaces */
-                       for (; *temp_buffer != '\0' && *temp_buffer == ' '; temp_buffer++)
-                               /* NOOP */;
-                       
-                       strip(temp_buffer);
-                       if (temp_buffer==NULL || strlen(temp_buffer)==0) {
-                               die (STATE_CRITICAL,
-                                    _("DNS CRITICAL - '%s' returned empty host name string\n"),
-                                    NSLOOKUP_COMMAND);
-                       }
-
-                       if (address == NULL)
-                               address = strdup (temp_buffer);
-                       else
-                               asprintf(&address, "%s,%s", address, temp_buffer);
-               }
-
-               else if (strstr (chld_out.line[i], _("Non-authoritative answer:"))) {
-                       non_authoritative = TRUE;
-               }
-
-               result = error_scan (chld_out.line[i]);
-               if (result != STATE_OK) {
-                       msg = strchr (chld_out.line[i], ':');
-                       if(msg) msg++;
-                       break;
-               }
-       }
-
-       /* scan stderr */
-       for(i = 0; i < chld_err.lines; i++) {
-               if (verbose)
-                       puts(chld_err.line[i]);
-
-               if (error_scan (chld_err.line[i]) != STATE_OK) {
-                       result = max_state (result, error_scan (chld_err.line[i]));
-                       msg = strchr(input_buffer, ':');
-                       if(msg) msg++;
-               }
-       }
-
-       /* If we got here, we should have an address string,
-        * and we can segfault if we do not */
-       if (address==NULL || strlen(address)==0)
-               die (STATE_CRITICAL,
-                    _("DNS CRITICAL - '%s' msg parsing exited with no address\n"),
-                    NSLOOKUP_COMMAND);
-
-       /* compare to expected address */
-       if (result == STATE_OK && match_expected_address && strcmp(address, expected_address)) {
-               result = STATE_CRITICAL;
-               asprintf(&msg, _("expected %s but got %s"), expected_address, address);
-       }
-
-       /* check if authoritative */
-       if (result == STATE_OK && expect_authority && non_authoritative) {
-               result = STATE_CRITICAL;
-               asprintf(&msg, _("server %s is not authoritative for %s"), dns_server, query_address);
-       }
-
-       microsec = deltime (tv);
-       elapsed_time = (double)microsec / 1.0e6;
-
-       if (result == STATE_OK) {
-               if (strchr (address, ',') == NULL)
-                       multi_address = FALSE;
-               else
-                       multi_address = TRUE;
-
-               printf ("DNS %s: ", _("OK"));
-               printf (ngettext("%.3f second response time", "%.3f seconds response time", elapsed_time), elapsed_time);
-               printf (_(". %s returns %s"), query_address, address);
-               printf ("|%s\n", fperfdata ("time", elapsed_time, "s", FALSE, 0, FALSE, 0, TRUE, 0, FALSE, 0));
-       }
-       else if (result == STATE_WARNING)
-               printf (_("DNS WARNING - %s\n"),
-                       !strcmp (msg, "") ? _(" Probably a non-existent host/domain") : msg);
-       else if (result == STATE_CRITICAL)
-               printf (_("DNS CRITICAL - %s\n"),
-                       !strcmp (msg, "") ? _(" Probably a non-existent host/domain") : msg);
-       else
-               printf (_("DNS UNKNOW - %s\n"),
-                       !strcmp (msg, "") ? _(" Probably a non-existent host/domain") : msg);
-
-       return result;
+  char *command_line = NULL;
+  char input_buffer[MAX_INPUT_BUFFER];
+  char *address = NULL;
+  char *msg = NULL;
+  char *temp_buffer = NULL;
+  int non_authoritative = FALSE;
+  int result = STATE_UNKNOWN;
+  double elapsed_time;
+  long microsec;
+  struct timeval tv;
+  int multi_address;
+  int parse_address = FALSE; /* This flag scans for Address: but only after Name: */
+  output chld_out, chld_err;
+  size_t i;
+
+  setlocale (LC_ALL, "");
+  bindtextdomain (PACKAGE, LOCALEDIR);
+  textdomain (PACKAGE);
+
+  /* Set signal handling and alarm */
+  if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR) {
+    usage_va(_("Cannot catch SIGALRM"));
+  }
+
+  if (process_arguments (argc, argv) == ERROR) {
+    usage_va(_("Could not parse arguments"));
+  }
+
+  /* get the command to run */
+  asprintf (&command_line, "%s %s %s", NSLOOKUP_COMMAND, query_address, dns_server);
+
+  alarm (timeout_interval);
+  gettimeofday (&tv, NULL);
+
+  if (verbose)
+    printf ("%s\n", command_line);
+
+  /* run the command */
+  if((np_runcmd(command_line, &chld_out, &chld_err, 0)) != 0) {
+    msg = (char *)_("nslookup returned an error status");
+    result = STATE_WARNING;
+  }
+
+  /* scan stdout */
+  for(i = 0; i < chld_out.lines; i++) {
+    if (verbose)
+      puts(chld_out.line[i]);
+
+    if (strstr (chld_out.line[i], ".in-addr.arpa")) {
+      if ((temp_buffer = strstr (chld_out.line[i], "name = ")))
+        address = strdup (temp_buffer + 7);
+      else {
+        msg = (char *)_("Warning plugin error");
+        result = STATE_WARNING;
+      }
+    }
+
+    /* the server is responding, we just got the host name... */
+    if (strstr (chld_out.line[i], "Name:"))
+      parse_address = TRUE;
+    else if (parse_address == TRUE && (strstr (chld_out.line[i], "Address:") ||
+             strstr (chld_out.line[i], "Addresses:"))) {
+      temp_buffer = index (chld_out.line[i], ':');
+      temp_buffer++;
+
+      /* Strip leading spaces */
+      for (; *temp_buffer != '\0' && *temp_buffer == ' '; temp_buffer++)
+        /* NOOP */;
+      
+      strip(temp_buffer);
+      if (temp_buffer==NULL || strlen(temp_buffer)==0) {
+        die (STATE_CRITICAL,
+             _("DNS CRITICAL - '%s' returned empty host name string\n"),
+             NSLOOKUP_COMMAND);
+      }
+
+      if (address == NULL)
+        address = strdup (temp_buffer);
+      else
+        asprintf(&address, "%s,%s", address, temp_buffer);
+    }
+
+    else if (strstr (chld_out.line[i], _("Non-authoritative answer:"))) {
+      non_authoritative = TRUE;
+    }
+
+    result = error_scan (chld_out.line[i]);
+    if (result != STATE_OK) {
+      msg = strchr (chld_out.line[i], ':');
+      if(msg) msg++;
+      break;
+    }
+  }
+
+  /* scan stderr */
+  for(i = 0; i < chld_err.lines; i++) {
+    if (verbose)
+      puts(chld_err.line[i]);
+
+    if (error_scan (chld_err.line[i]) != STATE_OK) {
+      result = max_state (result, error_scan (chld_err.line[i]));
+      msg = strchr(input_buffer, ':');
+      if(msg) msg++;
+    }
+  }
+
+  /* If we got here, we should have an address string,
+   * and we can segfault if we do not */
+  if (address==NULL || strlen(address)==0)
+    die (STATE_CRITICAL,
+         _("DNS CRITICAL - '%s' msg parsing exited with no address\n"),
+         NSLOOKUP_COMMAND);
+
+  /* compare to expected address */
+  if (result == STATE_OK && match_expected_address && strcmp(address, expected_address)) {
+    result = STATE_CRITICAL;
+    asprintf(&msg, _("expected %s but got %s"), expected_address, address);
+  }
+
+  /* check if authoritative */
+  if (result == STATE_OK && expect_authority && non_authoritative) {
+    result = STATE_CRITICAL;
+    asprintf(&msg, _("server %s is not authoritative for %s"), dns_server, query_address);
+  }
+
+  microsec = deltime (tv);
+  elapsed_time = (double)microsec / 1.0e6;
+
+  if (result == STATE_OK) {
+    if (strchr (address, ',') == NULL)
+      multi_address = FALSE;
+    else
+      multi_address = TRUE;
+
+    printf ("DNS %s: ", _("OK"));
+    printf (ngettext("%.3f second response time", "%.3f seconds response time", elapsed_time), elapsed_time);
+    printf (_(". %s returns %s"), query_address, address);
+    printf ("|%s\n", fperfdata ("time", elapsed_time, "s", FALSE, 0, FALSE, 0, TRUE, 0, FALSE, 0));
+  }
+  else if (result == STATE_WARNING)
+    printf (_("DNS WARNING - %s\n"),
+            !strcmp (msg, "") ? _(" Probably a non-existent host/domain") : msg);
+  else if (result == STATE_CRITICAL)
+    printf (_("DNS CRITICAL - %s\n"),
+            !strcmp (msg, "") ? _(" Probably a non-existent host/domain") : msg);
+  else
+    printf (_("DNS UNKNOW - %s\n"),
+            !strcmp (msg, "") ? _(" Probably a non-existent host/domain") : msg);
+
+  return result;
 }
 
 
@@ -207,56 +207,56 @@ int
 error_scan (char *input_buffer)
 {
 
-       /* the DNS lookup timed out */
-       if (strstr (input_buffer, _("Note: nslookup is deprecated and may be removed from future releases.")) ||
-           strstr (input_buffer, _("Consider using the `dig' or `host' programs instead.  Run nslookup with")) ||
-           strstr (input_buffer, _("the `-sil[ent]' option to prevent this message from appearing.")))
-               return STATE_OK;
-
-       /* DNS server is not running... */
-       else if (strstr (input_buffer, "No response from server"))
-               die (STATE_CRITICAL, _("No response from DNS %s\n"), dns_server);
-
-       /* Host name is valid, but server doesn't have records... */
-       else if (strstr (input_buffer, "No records"))
-               die (STATE_CRITICAL, _("DNS %s has no records\n"), dns_server);
-
-       /* Connection was refused */
-       else if (strstr (input_buffer, "Connection refused") ||
-                strstr (input_buffer, "Couldn't find server") ||
-                strstr (input_buffer, "Refused") ||
-                (strstr (input_buffer, "** server can't find") &&
-                 strstr (input_buffer, ": REFUSED")))
-               die (STATE_CRITICAL, _("Connection to DNS %s was refused\n"), dns_server);
-
-       /* Query refused (usually by an ACL in the namserver) */ 
-       else if (strstr (input_buffer, "Query refused"))
-               die (STATE_CRITICAL, _("Query was refused by DNS server at %s\n"), dns_server);
-
-       /* No information (e.g. nameserver IP has two PTR records) */
-       else if (strstr (input_buffer, "No information"))
-               die (STATE_CRITICAL, _("No information returned by DNS server at %s\n"), dns_server);
-
-       /* Host or domain name does not exist */
-       else if (strstr (input_buffer, "Non-existent") ||
-                strstr (input_buffer, "** server can't find") ||
-                strstr (input_buffer,"NXDOMAIN"))
-               die (STATE_CRITICAL, _("Domain %s was not found by the server\n"), query_address);
-
-       /* Network is unreachable */
-       else if (strstr (input_buffer, "Network is unreachable"))
-               die (STATE_CRITICAL, _("Network is unreachable\n"));
-
-       /* Internal server failure */
-       else if (strstr (input_buffer, "Server failure"))
-               die (STATE_CRITICAL, _("DNS failure for %s\n"), dns_server);
-
-       /* Request error or the DNS lookup timed out */
-       else if (strstr (input_buffer, "Format error") ||
-                strstr (input_buffer, "Timed out"))
-               return STATE_WARNING;
-
-       return STATE_OK;
+  /* the DNS lookup timed out */
+  if (strstr (input_buffer, _("Note: nslookup is deprecated and may be removed from future releases.")) ||
+      strstr (input_buffer, _("Consider using the `dig' or `host' programs instead.  Run nslookup with")) ||
+      strstr (input_buffer, _("the `-sil[ent]' option to prevent this message from appearing.")))
+    return STATE_OK;
+
+  /* DNS server is not running... */
+  else if (strstr (input_buffer, "No response from server"))
+    die (STATE_CRITICAL, _("No response from DNS %s\n"), dns_server);
+
+  /* Host name is valid, but server doesn't have records... */
+  else if (strstr (input_buffer, "No records"))
+    die (STATE_CRITICAL, _("DNS %s has no records\n"), dns_server);
+
+  /* Connection was refused */
+  else if (strstr (input_buffer, "Connection refused") ||
+     strstr (input_buffer, "Couldn't find server") ||
+           strstr (input_buffer, "Refused") ||
+           (strstr (input_buffer, "** server can't find") &&
+            strstr (input_buffer, ": REFUSED")))
+    die (STATE_CRITICAL, _("Connection to DNS %s was refused\n"), dns_server);
+
+  /* Query refused (usually by an ACL in the namserver) */ 
+  else if (strstr (input_buffer, "Query refused"))
+    die (STATE_CRITICAL, _("Query was refused by DNS server at %s\n"), dns_server);
+
+  /* No information (e.g. nameserver IP has two PTR records) */
+  else if (strstr (input_buffer, "No information"))
+    die (STATE_CRITICAL, _("No information returned by DNS server at %s\n"), dns_server);
+
+  /* Host or domain name does not exist */
+  else if (strstr (input_buffer, "Non-existent") ||
+           strstr (input_buffer, "** server can't find") ||
+     strstr (input_buffer,"NXDOMAIN"))
+    die (STATE_CRITICAL, _("Domain %s was not found by the server\n"), query_address);
+
+  /* Network is unreachable */
+  else if (strstr (input_buffer, "Network is unreachable"))
+    die (STATE_CRITICAL, _("Network is unreachable\n"));
+
+  /* Internal server failure */
+  else if (strstr (input_buffer, "Server failure"))
+    die (STATE_CRITICAL, _("DNS failure for %s\n"), dns_server);
+
+  /* Request error or the DNS lookup timed out */
+  else if (strstr (input_buffer, "Format error") ||
+           strstr (input_buffer, "Timed out"))
+    return STATE_WARNING;
+
+  return STATE_OK;
 
 }
 
@@ -265,148 +265,177 @@ error_scan (char *input_buffer)
 int
 process_arguments (int argc, char **argv)
 {
-       int c;
-
-       int opt_index = 0;
-       static struct option long_opts[] = {
-               {"help", no_argument, 0, 'h'},
-               {"version", no_argument, 0, 'V'},
-               {"verbose", no_argument, 0, 'v'},
-               {"timeout", required_argument, 0, 't'},
-               {"hostname", required_argument, 0, 'H'},
-               {"server", required_argument, 0, 's'},
-               {"reverse-server", required_argument, 0, 'r'},
-               {"expected-address", required_argument, 0, 'a'},
-               {"expect-authority", no_argument, 0, 'A'},
-               {0, 0, 0, 0}
-       };
-
-       if (argc < 2)
-               return ERROR;
-
-       for (c = 1; c < argc; c++)
-               if (strcmp ("-to", argv[c]) == 0)
-                       strcpy (argv[c], "-t");
-
-       while (1) {
-               c = getopt_long (argc, argv, "hVvAt:H:s:r:a:", long_opts, &opt_index);
-
-               if (c == -1 || c == EOF)
-                       break;
-
-               switch (c) {
-               case 'h': /* help */
-                       print_help ();
-                       exit (STATE_OK);
-               case 'V': /* version */
-                       print_revision (progname, revision);
-                       exit (STATE_OK);
-               case 'v': /* version */
-                       verbose = TRUE;
-                       break;
-               case 't': /* timeout period */
-                       timeout_interval = atoi (optarg);
-                       break;
-               case 'H': /* hostname */
-                       if (strlen (optarg) >= ADDRESS_LENGTH)
-                               die (STATE_UNKNOWN, _("Input buffer overflow\n"));
-                       strcpy (query_address, optarg);
-                       break;
-               case 's': /* server name */
-                       /* TODO: this host_or_die check is probably unnecessary.
-                        * Better to confirm nslookup response matches */
-                       host_or_die(optarg);
-                       if (strlen (optarg) >= ADDRESS_LENGTH)
-                               die (STATE_UNKNOWN, _("Input buffer overflow\n"));
-                       strcpy (dns_server, optarg);
-                       break;
-               case 'r': /* reverse server name */
-                       /* TODO: Is this host_or_die necessary? */
-                       host_or_die(optarg);
-                       if (strlen (optarg) >= ADDRESS_LENGTH)
-                               die (STATE_UNKNOWN, _("Input buffer overflow\n"));
-                       strcpy (ptr_server, optarg);
-                       break;
-               case 'a': /* expected address */
-                       if (strlen (optarg) >= ADDRESS_LENGTH)
-                               die (STATE_UNKNOWN, _("Input buffer overflow\n"));
-                       strcpy (expected_address, optarg);
-                       match_expected_address = TRUE;
-                       break;
-               case 'A': /* expect authority */
-                       expect_authority = TRUE;
-                       break;
-               default: /* args not parsable */
-                       usage_va(_("Unknown argument - %s"), optarg);
-               }
-       }
-
-       c = optind;
-       if (strlen(query_address)==0 && c<argc) {
-               if (strlen(argv[c])>=ADDRESS_LENGTH)
-                       die (STATE_UNKNOWN, _("Input buffer overflow\n"));
-               strcpy (query_address, argv[c++]);
-       }
-
-       if (strlen(dns_server)==0 && c<argc) {
-               /* TODO: See -s option */
-               host_or_die(argv[c]);
-               if (strlen(argv[c]) >= ADDRESS_LENGTH)
-                       die (STATE_UNKNOWN, _("Input buffer overflow\n"));
-               strcpy (dns_server, argv[c++]);
-       }
-
-       return validate_arguments ();
+  int c;
+
+  int opt_index = 0;
+  static struct option long_opts[] = {
+    {"help", no_argument, 0, 'h'},
+    {"version", no_argument, 0, 'V'},
+    {"verbose", no_argument, 0, 'v'},
+    {"timeout", required_argument, 0, 't'},
+    {"hostname", required_argument, 0, 'H'},
+    {"server", required_argument, 0, 's'},
+    {"reverse-server", required_argument, 0, 'r'},
+    {"expected-address", required_argument, 0, 'a'},
+    {"expect-authority", no_argument, 0, 'A'},
+    {0, 0, 0, 0}
+  };
+
+  if (argc < 2)
+    return ERROR;
+
+  for (c = 1; c < argc; c++)
+    if (strcmp ("-to", argv[c]) == 0)
+      strcpy (argv[c], "-t");
+
+  while (1) {
+    c = getopt_long (argc, argv, "hVvAt:H:s:r:a:", long_opts, &opt_index);
+
+    if (c == -1 || c == EOF)
+      break;
+
+    switch (c) {
+    case 'h': /* help */
+      print_help ();
+      exit (STATE_OK);
+    case 'V': /* version */
+      print_revision (progname, revision);
+      exit (STATE_OK);
+    case 'v': /* version */
+      verbose = TRUE;
+      break;
+    case 't': /* timeout period */
+      timeout_interval = atoi (optarg);
+      break;
+    case 'H': /* hostname */
+      if (strlen (optarg) >= ADDRESS_LENGTH)
+        die (STATE_UNKNOWN, _("Input buffer overflow\n"));
+      strcpy (query_address, optarg);
+      break;
+    case 's': /* server name */
+      /* TODO: this host_or_die check is probably unnecessary.
+       * Better to confirm nslookup response matches */
+      host_or_die(optarg);
+      if (strlen (optarg) >= ADDRESS_LENGTH)
+        die (STATE_UNKNOWN, _("Input buffer overflow\n"));
+      strcpy (dns_server, optarg);
+      break;
+    case 'r': /* reverse server name */
+      /* TODO: Is this host_or_die necessary? */
+      host_or_die(optarg);
+      if (strlen (optarg) >= ADDRESS_LENGTH)
+        die (STATE_UNKNOWN, _("Input buffer overflow\n"));
+      strcpy (ptr_server, optarg);
+      break;
+    case 'a': /* expected address */
+      if (strlen (optarg) >= ADDRESS_LENGTH)
+        die (STATE_UNKNOWN, _("Input buffer overflow\n"));
+      strcpy (expected_address, optarg);
+      match_expected_address = TRUE;
+      break;
+    case 'A': /* expect authority */
+      expect_authority = TRUE;
+      break;
+    default: /* args not parsable */
+      usage_va(_("Unknown argument - %s"), optarg);
+    }
+  }
+
+  c = optind;
+  if (strlen(query_address)==0 && c<argc) {
+    if (strlen(argv[c])>=ADDRESS_LENGTH)
+      die (STATE_UNKNOWN, _("Input buffer overflow\n"));
+    strcpy (query_address, argv[c++]);
+  }
+
+  if (strlen(dns_server)==0 && c<argc) {
+    /* TODO: See -s option */
+    host_or_die(argv[c]);
+    if (strlen(argv[c]) >= ADDRESS_LENGTH)
+      die (STATE_UNKNOWN, _("Input buffer overflow\n"));
+    strcpy (dns_server, argv[c++]);
+  }
+
+  return validate_arguments ();
 }
 
 
 int
 validate_arguments ()
 {
-       if (query_address[0] == 0)
-               return ERROR;
+  if (query_address[0] == 0)
+    return ERROR;
 
-       return OK;
+  return OK;
 }
 
 
 void
 print_help (void)
 {
-       print_revision (progname, revision);
+  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 uses the nslookup program to obtain the IP address\n\
-for the given host/domain query.  A optional DNS server to use may\n\
-be specified.  If no DNS server is specified, the default server(s)\n\
-specified in /etc/resolv.conf will be used.\n\n"));
+  printf (_("This plugin uses the nslookup program to obtain the IP address for the given host/domain query."));
+  
+  printf ("\n");
+  
+  printf (_("An optional DNS server to use may be specified."));
+  
+  printf ("\n");
 
-       print_usage ();
+  printf (_("If no DNS server is specified, the default server(s)specified in /etc/resolv.conf will be used."));
 
-       printf (_(UT_HELP_VRSN));
+  printf ("\n\n");
 
-       printf (_("\
--H, --hostname=HOST\n\
-   The name or address you want to query\n\
--s, --server=HOST\n\
-   Optional DNS server you want to use for the lookup\n\
--a, --expected-address=IP-ADDRESS\n\
-   Optional IP address you expect the DNS server to return\n\
--A, --expect-authority\n\
-   Optionally expect the DNS server to be authoritative for the lookup\n"));
+  print_usage ();
 
-       printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+  printf (_(UT_HELP_VRSN));
 
-       printf (_(UT_SUPPORT));
+  printf ("  -H, --hostname=HOST");
+  printf ("\n");
+
+  printf (_("the name or address you want to query"));
+  
+  printf ("\n");
+
+  printf ("  -s, --server=HOST");
+  
+  printf ("\n");
+
+  printf (_("optional DNS server you want to use for the lookup"));
+  
+  printf ("\n");
+
+  printf ("  -a, --expected-address=IP-ADDRESS");
+  
+  printf ("\n");
+
+  printf (_("optional IP address you expect the DNS server to return"));
+  
+  printf ("\n");
+
+  printf ("  -A, --expect-authority");
+  
+  printf ("\n");
+
+  printf (_("optionally expect the DNS server to be authoritative for the lookup"));
+
+  printf ("\n");
+
+  printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+
+  printf (_(UT_SUPPORT));
 }
 
 
 void
 print_usage (void)
 {
-       printf ("\
-Usage: %s -H host [-s server] [-a expected-address] [-A] [-t timeout]\n", progname);
+  printf (_("Usage:"));
+  
+  printf ("%s -H host [-s server] [-a expected-address] [-A] [-t timeout]\n", progname);
 }
index 0892611508fe05ff5ed9bac779b8f7d9a367c476..0a7f472cb8c2c834c85e85f1a359ed4d9f4f2261 100644 (file)
@@ -20,7 +20,7 @@
 
 const char *progname = "check_dummy";
 const char *revision = "$Revision$";
-const char *copyright = "1999-2004";
+const char *copyright = "1999-2005";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
 #include "common.h"
@@ -33,51 +33,51 @@ void print_usage (void);
 int
 main (int argc, char **argv)
 {
-       int result = STATE_UNKNOWN;
-
-       setlocale (LC_ALL, "");
-       bindtextdomain (PACKAGE, LOCALEDIR);
-       textdomain (PACKAGE);
-
-       if (argc < 2)
-               usage4 (_("Could not parse arguments"));
-       else if (strcmp (argv[1], "-V") == 0 || strcmp (argv[1], "--version") == 0) {
-               print_revision (progname, revision);
-               exit (STATE_OK);
-       }
-       else if (strcmp (argv[1], "-h") == 0 || strcmp (argv[1], "--help") == 0) {
-               print_help ();
-               exit (STATE_OK);
-       }
-       else if (!is_integer (argv[1]))
-               usage4 (_("Arguments to check_dummy must be an integer"));
-       else
-               result = atoi (argv[1]);
-
-       switch (result) {
-       case STATE_OK:
-               printf (_("OK"));
-               break;
-       case STATE_WARNING:
-               printf (_("WARNING"));
-               break;
-       case STATE_CRITICAL:
-               printf (_("CRITICAL"));
-               break;
-       case STATE_UNKNOWN:
-               printf (_("UNKNOWN"));
-               break;
-       default:
-               printf (_("Status %d is not a supported error state\n"), result);
-               break;
-       }
-
-       if (argc >= 3) 
-               printf (": %s", argv[2]);
-
-       printf("\n");
-
-       return result;
+  int result = STATE_UNKNOWN;
+
+  setlocale (LC_ALL, "");
+  bindtextdomain (PACKAGE, LOCALEDIR);
+  textdomain (PACKAGE);
+
+  if (argc < 2)
+    usage4 (_("Could not parse arguments"));
+  else if (strcmp (argv[1], "-V") == 0 || strcmp (argv[1], "--version") == 0) {
+    print_revision (progname, revision);
+    exit (STATE_OK);
+  }
+  else if (strcmp (argv[1], "-h") == 0 || strcmp (argv[1], "--help") == 0) {
+    print_help ();
+    exit (STATE_OK);
+  }
+  else if (!is_integer (argv[1]))
+    usage4 (_("Arguments to check_dummy must be an integer"));
+  else
+    result = atoi (argv[1]);
+
+  switch (result) {
+  case STATE_OK:
+    printf (_("OK"));
+    break;
+  case STATE_WARNING:
+    printf (_("WARNING"));
+    break;
+  case STATE_CRITICAL:
+    printf (_("CRITICAL"));
+    break;
+  case STATE_UNKNOWN:
+    printf (_("UNKNOWN"));
+    break;
+  default:
+    printf (_("Status %d is not a supported error state\n"), result);
+    break;
+  }
+
+  if (argc >= 3) 
+    printf (": %s", argv[2]);
+
+  printf("\n");
+
+  return result;
 }
 
 
@@ -85,20 +85,24 @@ main (int argc, char **argv)
 void
 print_help (void)
 {
-       print_revision (progname, revision);
+  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 will simply return the state corresponding to the numeric value\n\
-of the <state> argument with optional text.\n\n"));
+  printf (_("This plugin will simply return the state corresponding to the numeric value"));
+  printf ("\n");
+  printf (_("of the <state> argument with optional text"));
 
-       print_usage ();
+  printf ("\n\n");
+  
+  print_usage ();
 
-       printf (_(UT_HELP_VRSN));
+  printf (_(UT_HELP_VRSN));
 
-       printf (_(UT_SUPPORT));
+  printf (_(UT_SUPPORT));
 }
 
 
@@ -106,5 +110,6 @@ of the <state> argument with optional text.\n\n"));
 void
 print_usage (void)
 {
-       printf ("Usage: %s <integer state> [optional text]\n", progname);
+  printf (_("Usage:"));
+  printf (" %s <integer state> [optional text]\n", progname);
 }
index 5ffcd16e35ed3a02bcc9fafd61b7b0774720ba33..49615d13b9b0719350ea2ec18c29afc63377a634 100644 (file)
@@ -29,10 +29,10 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
 #include "utils.h"
 
 enum {
-       PACKET_COUNT = 1,
-       PACKET_SIZE = 56,
-       PL = 0,
-       RTA = 1
+  PACKET_COUNT = 1,
+  PACKET_SIZE = 56,
+  PL = 0,
+  RTA = 1
 };
 
 int textscan (char *buf);
@@ -57,65 +57,65 @@ int wrta_p = FALSE;
 int
 main (int argc, char **argv)
 {
-/* normaly should be   int result = STATE_UNKNOWN; */
-
-       int status = STATE_UNKNOWN;
-       char *server = NULL;
-       char *command_line = NULL;
-       char *input_buffer = NULL;
-       input_buffer = malloc (MAX_INPUT_BUFFER);
-
-       setlocale (LC_ALL, "");
-       bindtextdomain (PACKAGE, LOCALEDIR);
-       textdomain (PACKAGE);
-
-       if (process_arguments (argc, argv) == ERROR)
-               usage4 (_("Could not parse arguments"));
-
-       server = strscpy (server, server_name);
-
-       /* compose the command */
-       asprintf (&command_line, "%s -b %d -c %d %s", PATH_TO_FPING,
-                 packet_size, packet_count, server);
-
-       if (verbose)
-               printf ("%s\n", command_line);
-
-       /* run the command */
-       child_process = spopen (command_line);
-       if (child_process == NULL) {
-               printf (_("Could not open pipe: %s\n"), command_line);
-               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"), command_line);
-       }
-
-       while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
-               if (verbose)
-                       printf ("%s", input_buffer);
-               status = max_state (status, textscan (input_buffer));
-       }
-
-       /* If we get anything on STDERR, at least set warning */
-       while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) {
-               status = max_state (status, STATE_WARNING);
-               if (verbose)
-                       printf ("%s", input_buffer);
-               status = max_state (status, textscan (input_buffer));
-       }
-       (void) fclose (child_stderr);
-
-       /* close the pipe */
-       if (spclose (child_process))
-               /* need to use max_state not max */
-               status = max_state (status, STATE_WARNING);
-
-       printf ("FPING %s - %s\n", state_text (status), server_name);
-
-       return status;
+/* normaly should be  int result = STATE_UNKNOWN; */
+
+  int status = STATE_UNKNOWN;
+  char *server = NULL;
+  char *command_line = NULL;
+  char *input_buffer = NULL;
+  input_buffer = malloc (MAX_INPUT_BUFFER);
+
+  setlocale (LC_ALL, "");
+  bindtextdomain (PACKAGE, LOCALEDIR);
+  textdomain (PACKAGE);
+
+  if (process_arguments (argc, argv) == ERROR)
+    usage4 (_("Could not parse arguments"));
+
+  server = strscpy (server, server_name);
+
+  /* compose the command */
+  asprintf (&command_line, "%s -b %d -c %d %s", PATH_TO_FPING,
+            packet_size, packet_count, server);
+
+  if (verbose)
+    printf ("%s\n", command_line);
+
+  /* run the command */
+  child_process = spopen (command_line);
+  if (child_process == NULL) {
+    printf (_("Could not open pipe: %s\n"), command_line);
+    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"), command_line);
+  }
+
+  while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
+    if (verbose)
+      printf ("%s", input_buffer);
+    status = max_state (status, textscan (input_buffer));
+  }
+
+  /* If we get anything on STDERR, at least set warning */
+  while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) {
+    status = max_state (status, STATE_WARNING);
+    if (verbose)
+      printf ("%s", input_buffer);
+    status = max_state (status, textscan (input_buffer));
+  }
+  (void) fclose (child_stderr);
+
+  /* close the pipe */
+  if (spclose (child_process))
+    /* need to use max_state not max */
+    status = max_state (status, STATE_WARNING);
+
+  printf ("FPING %s - %s\n", state_text (status), server_name);
+
+  return status;
 }
 
 
@@ -123,80 +123,80 @@ main (int argc, char **argv)
 int
 textscan (char *buf)
 {
-       char *rtastr = NULL;
-       char *losstr = NULL;
-       double loss;
-       double rta;
-       int status = STATE_UNKNOWN;
-
-       if (strstr (buf, "not found")) {
-               die (STATE_CRITICAL, _("FPING UNKNOW - %s not found\n"), server_name);
-
-       }
-       else if (strstr (buf, "is unreachable") || strstr (buf, "Unreachable")) {
-               die (STATE_CRITICAL, _("FPING CRITICAL - %s is unreachable\n"),
-                                                        "host");
-
-       }
-       else if (strstr (buf, "is down")) {
-               die (STATE_CRITICAL, _("FPING CRITICAL - %s is down\n"), server_name);
-
-       }
-       else if (strstr (buf, "is alive")) {
-               status = STATE_OK;
-
-       }
-       else if (strstr (buf, "xmt/rcv/%loss") && strstr (buf, "min/avg/max")) {
-               losstr = strstr (buf, "=");
-               losstr = 1 + strstr (losstr, "/");
-               losstr = 1 + strstr (losstr, "/");
-               rtastr = strstr (buf, "min/avg/max");
-               rtastr = strstr (rtastr, "=");
-               rtastr = 1 + index (rtastr, '/');
-               loss = strtod (losstr, NULL);
-               rta = strtod (rtastr, NULL);
-               if (cpl_p == TRUE && loss > cpl)
-                       status = STATE_CRITICAL;
-               else if (crta_p == TRUE  && rta > crta)
-                       status = STATE_CRITICAL;
-               else if (wpl_p == TRUE && loss > wpl)
-                       status = STATE_WARNING;
-               else if (wrta_p == TRUE && rta > wrta)
-                       status = STATE_WARNING;
-               else
-                       status = STATE_OK;
-               die (status,
-                     _("FPING %s - %s (loss=%.0f%%, rta=%f ms)|%s %s\n"),
-                                state_text (status), server_name, loss, rta,
-                    perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, TRUE, 0, TRUE, 100),
-                    fperfdata ("rta", rta/1.0e3, "s", wrta_p, wrta/1.0e3, crta_p, crta/1.0e3, TRUE, 0, FALSE, 0));
-
-       }
-       else if(strstr (buf, "xmt/rcv/%loss") ) {
-               /* no min/max/avg if host was unreachable in fping v2.2.b1 */
-               losstr = strstr (buf, "=");
-               losstr = 1 + strstr (losstr, "/");
-               losstr = 1 + strstr (losstr, "/");
-               loss = strtod (losstr, NULL);
-               if (atoi(losstr) == 100)
-                       status = STATE_CRITICAL;
-               else if (cpl_p == TRUE && loss > cpl)
-                       status = STATE_CRITICAL;
-               else if (wpl_p == TRUE && loss > wpl)
-                       status = STATE_WARNING;
-               else
-                       status = STATE_OK;
-               /* loss=%.0f%%;%d;%d;0;100 */
-               die (status, _("FPING %s - %s (loss=%.0f%% )|%s\n"),
-                    state_text (status), server_name, loss ,
-                    perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, TRUE, 0, TRUE, 100));
-       
-       }
-       else {
-               status = max_state (status, STATE_WARNING);
-       }
-
-       return status;
+  char *rtastr = NULL;
+  char *losstr = NULL;
+  double loss;
+  double rta;
+  int status = STATE_UNKNOWN;
+
+  if (strstr (buf, "not found")) {
+    die (STATE_CRITICAL, _("FPING UNKNOW - %s not found\n"), server_name);
+
+  }
+  else if (strstr (buf, "is unreachable") || strstr (buf, "Unreachable")) {
+    die (STATE_CRITICAL, _("FPING CRITICAL - %s is unreachable\n"),
+               "host");
+
+  }
+  else if (strstr (buf, "is down")) {
+    die (STATE_CRITICAL, _("FPING CRITICAL - %s is down\n"), server_name);
+
+  }
+  else if (strstr (buf, "is alive")) {
+    status = STATE_OK;
+
+  }
+  else if (strstr (buf, "xmt/rcv/%loss") && strstr (buf, "min/avg/max")) {
+    losstr = strstr (buf, "=");
+    losstr = 1 + strstr (losstr, "/");
+    losstr = 1 + strstr (losstr, "/");
+    rtastr = strstr (buf, "min/avg/max");
+    rtastr = strstr (rtastr, "=");
+    rtastr = 1 + index (rtastr, '/');
+    loss = strtod (losstr, NULL);
+    rta = strtod (rtastr, NULL);
+    if (cpl_p == TRUE && loss > cpl)
+      status = STATE_CRITICAL;
+    else if (crta_p == TRUE  && rta > crta)
+      status = STATE_CRITICAL;
+    else if (wpl_p == TRUE && loss > wpl)
+      status = STATE_WARNING;
+    else if (wrta_p == TRUE && rta > wrta)
+      status = STATE_WARNING;
+    else
+      status = STATE_OK;
+    die (status,
+          _("FPING %s - %s (loss=%.0f%%, rta=%f ms)|%s %s\n"),
+         state_text (status), server_name, loss, rta,
+         perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, TRUE, 0, TRUE, 100),
+         fperfdata ("rta", rta/1.0e3, "s", wrta_p, wrta/1.0e3, crta_p, crta/1.0e3, TRUE, 0, FALSE, 0));
+
+  }
+  else if(strstr (buf, "xmt/rcv/%loss") ) {
+    /* no min/max/avg if host was unreachable in fping v2.2.b1 */
+    losstr = strstr (buf, "=");
+    losstr = 1 + strstr (losstr, "/");
+    losstr = 1 + strstr (losstr, "/");
+    loss = strtod (losstr, NULL);
+    if (atoi(losstr) == 100)
+      status = STATE_CRITICAL;
+    else if (cpl_p == TRUE && loss > cpl)
+      status = STATE_CRITICAL;
+    else if (wpl_p == TRUE && loss > wpl)
+      status = STATE_WARNING;
+    else
+      status = STATE_OK;
+    /* loss=%.0f%%;%d;%d;0;100 */
+    die (status, _("FPING %s - %s (loss=%.0f%% )|%s\n"),
+         state_text (status), server_name, loss ,
+         perfdata ("loss", (long int)loss, "%", wpl_p, wpl, cpl_p, cpl, TRUE, 0, TRUE, 100));
+  
+  }
+  else {
+    status = max_state (status, STATE_WARNING);
+  }
+
+  return status;
 }
 
 
@@ -205,145 +205,145 @@ textscan (char *buf)
 int
 process_arguments (int argc, char **argv)
 {
-       int c;
-       char *rv[2];
-
-       int option = 0;
-       static struct option longopts[] = {
-               {"hostname", required_argument, 0, 'H'},
-               {"critical", required_argument, 0, 'c'},
-               {"warning", required_argument, 0, 'w'},
-               {"bytes", required_argument, 0, 'b'},
-               {"number", required_argument, 0, 'n'},
-               {"verbose", no_argument, 0, 'v'},
-               {"version", no_argument, 0, 'V'},
-               {"help", no_argument, 0, 'h'},
-               {0, 0, 0, 0}
-       };
-
-       rv[PL] = NULL;
-       rv[RTA] = NULL;
-
-       if (argc < 2)
-               return ERROR;
-
-       if (!is_option (argv[1])) {
-               server_name = argv[1];
-               argv[1] = argv[0];
-               argv = &argv[1];
-               argc--;
-       }
-
-       while (1) {
-               c = getopt_long (argc, argv, "+hVvH:c:w:b:n:", longopts, &option);
-
-               if (c == -1 || c == EOF || c == 1)
-                       break;
-
-               switch (c) {
-               case '?':                                                                       /* print short usage statement if args not parsable */
-                       usage2 (_("Unknown argument"), optarg);
-               case 'h':                                                                       /* help */
-                       print_help ();
-                       exit (STATE_OK);
-               case 'V':                                                                       /* version */
-                       print_revision (progname, revision);
-                       exit (STATE_OK);
-               case 'v':                                                                       /* verbose mode */
-                       verbose = TRUE;
-                       break;
-               case 'H':                                                                       /* hostname */
-                       if (is_host (optarg) == FALSE) {
-                               usage2 (_("Invalid hostname/address"), optarg);
-                       }
-                       server_name = strscpy (server_name, optarg);
-                       break;
-               case 'c':
-                       get_threshold (optarg, rv);
-                       if (rv[RTA]) {
-                               crta = strtod (rv[RTA], NULL);
-                               crta_p = TRUE;
-                               rv[RTA] = NULL;
-                       }
-                       if (rv[PL]) {
-                               cpl = atoi (rv[PL]);
-                               cpl_p = TRUE;
-                               rv[PL] = NULL;
-                       }
-                       break;
-               case 'w':
-                       get_threshold (optarg, rv);
-                       if (rv[RTA]) {
-                               wrta = strtod (rv[RTA], NULL);
-                               wrta_p = TRUE;
-                               rv[RTA] = NULL;
-                       }
-                       if (rv[PL]) {
-                               wpl = atoi (rv[PL]);
-                               wpl_p = TRUE;
-                               rv[PL] = NULL;
-                       }
-                       break;
-               case 'b':                                                                       /* bytes per packet */
-                       if (is_intpos (optarg))
-                               packet_size = atoi (optarg);
-                       else
-                               usage (_("Packet size must be a positive integer"));
-                       break;
-               case 'n':                                                                       /* number of packets */
-                       if (is_intpos (optarg))
-                               packet_count = atoi (optarg);
-                       else
-                               usage (_("Packet count must be a positive integer"));
-                       break;
-               }
-       }
-
-       if (server_name == NULL)
-               usage4 (_("Hostname was not supplied"));
-
-       return OK;
+  int c;
+  char *rv[2];
+
+  int option = 0;
+  static struct option longopts[] = {
+    {"hostname", required_argument, 0, 'H'},
+    {"critical", required_argument, 0, 'c'},
+    {"warning", required_argument, 0, 'w'},
+    {"bytes", required_argument, 0, 'b'},
+    {"number", required_argument, 0, 'n'},
+    {"verbose", no_argument, 0, 'v'},
+    {"version", no_argument, 0, 'V'},
+    {"help", no_argument, 0, 'h'},
+    {0, 0, 0, 0}
+  };
+
+  rv[PL] = NULL;
+  rv[RTA] = NULL;
+
+  if (argc < 2)
+    return ERROR;
+
+  if (!is_option (argv[1])) {
+    server_name = argv[1];
+    argv[1] = argv[0];
+    argv = &argv[1];
+    argc--;
+  }
+
+  while (1) {
+    c = getopt_long (argc, argv, "+hVvH:c:w:b:n:", longopts, &option);
+
+    if (c == -1 || c == EOF || c == 1)
+      break;
+
+    switch (c) {
+    case '?':                 /* print short usage statement if args not parsable */
+      usage2 (_("Unknown argument"), optarg);
+    case 'h':                 /* help */
+      print_help ();
+      exit (STATE_OK);
+    case 'V':                 /* version */
+      print_revision (progname, revision);
+      exit (STATE_OK);
+    case 'v':                 /* verbose mode */
+      verbose = TRUE;
+      break;
+    case 'H':                 /* hostname */
+      if (is_host (optarg) == FALSE) {
+        usage2 (_("Invalid hostname/address"), optarg);
+      }
+      server_name = strscpy (server_name, optarg);
+      break;
+    case 'c':
+      get_threshold (optarg, rv);
+      if (rv[RTA]) {
+        crta = strtod (rv[RTA], NULL);
+        crta_p = TRUE;
+        rv[RTA] = NULL;
+      }
+      if (rv[PL]) {
+        cpl = atoi (rv[PL]);
+        cpl_p = TRUE;
+        rv[PL] = NULL;
+      }
+      break;
+    case 'w':
+      get_threshold (optarg, rv);
+      if (rv[RTA]) {
+        wrta = strtod (rv[RTA], NULL);
+        wrta_p = TRUE;
+        rv[RTA] = NULL;
+      }
+      if (rv[PL]) {
+        wpl = atoi (rv[PL]);
+        wpl_p = TRUE;
+        rv[PL] = NULL;
+      }
+      break;
+    case 'b':                 /* bytes per packet */
+      if (is_intpos (optarg))
+        packet_size = atoi (optarg);
+      else
+        usage (_("Packet size must be a positive integer"));
+      break;
+    case 'n':                 /* number of packets */
+      if (is_intpos (optarg))
+        packet_count = atoi (optarg);
+      else
+        usage (_("Packet count must be a positive integer"));
+      break;
+    }
+  }
+
+  if (server_name == NULL)
+    usage4 (_("Hostname was not supplied"));
+
+  return OK;
 }
 
 
 int
 get_threshold (char *arg, char *rv[2])
 {
-       char *arg1 = NULL;
-       char *arg2 = NULL;
-
-       arg1 = strscpy (arg1, arg);
-       if (strpbrk (arg1, ",:"))
-               arg2 = 1 + strpbrk (arg1, ",:");
-
-       if (arg2) {
-               arg1[strcspn (arg1, ",:")] = 0;
-               if (strstr (arg1, "%") && strstr (arg2, "%"))
-                       die (STATE_UNKNOWN,
-                                                                _("%s: Only one threshold may be packet loss (%s)\n"), progname,
-                                                                arg);
-               if (!strstr (arg1, "%") && !strstr (arg2, "%"))
-                       die (STATE_UNKNOWN,
-                                                                _("%s: Only one threshold must be packet loss (%s)\n"),
-                                                                progname, arg);
-       }
-
-       if (arg2 && strstr (arg2, "%")) {
-               rv[PL] = arg2;
-               rv[RTA] = arg1;
-       }
-       else if (arg2) {
-               rv[PL] = arg1;
-               rv[RTA] = arg2;
-       }
-       else if (strstr (arg1, "%")) {
-               rv[PL] = arg1;
-       }
-       else {
-               rv[RTA] = arg1;
-       }
-
-       return OK;
+  char *arg1 = NULL;
+  char *arg2 = NULL;
+
+  arg1 = strscpy (arg1, arg);
+  if (strpbrk (arg1, ",:"))
+    arg2 = 1 + strpbrk (arg1, ",:");
+
+  if (arg2) {
+    arg1[strcspn (arg1, ",:")] = 0;
+    if (strstr (arg1, "%") && strstr (arg2, "%"))
+      die (STATE_UNKNOWN,
+                 _("%s: Only one threshold may be packet loss (%s)\n"), progname,
+                 arg);
+    if (!strstr (arg1, "%") && !strstr (arg2, "%"))
+      die (STATE_UNKNOWN,
+                 _("%s: Only one threshold must be packet loss (%s)\n"),
+                 progname, arg);
+  }
+
+  if (arg2 && strstr (arg2, "%")) {
+    rv[PL] = arg2;
+    rv[RTA] = arg1;
+  }
+  else if (arg2) {
+    rv[PL] = arg1;
+    rv[RTA] = arg2;
+  }
+  else if (strstr (arg1, "%")) {
+    rv[PL] = arg1;
+  }
+  else {
+    rv[RTA] = arg1;
+  }
+
+  return OK;
 }
 
 
@@ -351,47 +351,82 @@ void
 print_help (void)
 {
 
-       print_revision (progname, revision);
+  print_revision (progname, revision);
 
-       printf ("Copyright (c) 1999 Didi Rieder <adrieder@sbox.tu-graz.ac.at>\n");
-       printf (COPYRIGHT, copyright, email);
+  printf ("Copyright (c) 1999 Didi Rieder <adrieder@sbox.tu-graz.ac.at>\n");
+  printf (COPYRIGHT, copyright, email);
 
-       printf (_("\
-This plugin will use the /bin/fping command to ping the specified host\n\
-for a fast check if the host is alive.\n\
-Note that it is necessary to set the suid flag on fping.\n\n"));
+  printf (_("This plugin will use the fping command to ping the specified host for a fast check"));
+  
+  printf ("\n");
+  
+  printf (_("Note that it is necessary to set the suid flag on fping."));
 
-       print_usage ();
+  printf ("\n\n");
+  
+  print_usage ();
 
-       printf (_(UT_HELP_VRSN));
+  printf (_(UT_HELP_VRSN));
 
-       printf (_("\
- -H, --hostname=HOST\n\
-    Name or IP Address of host to ping (IP Address bypasses name lookup,\n\
-    reducing system load)\n\
- -w, --warning=THRESHOLD\n\
-    warning threshold pair\n\
- -c, --critical=THRESHOLD\n\
-    critical threshold pair\n\
- -b, --bytes=INTEGER\n\
-    Size of ICMP packet (default: %d)\n\
- -n, --number=INTEGER\n\
-    Number of ICMP packets to send (default: %d)\n"),
-               PACKET_SIZE, PACKET_COUNT);
+  printf ("  -H, --hostname=HOST");
+  
+  printf (_("name or IP Address of host to ping (IP Address bypasses name lookup, reducing system load)"));
+  
+  printf ("\n");
+  
+  printf ("-w, --warning=THRESHOLD");
+  
+  printf ("\n");
+  
+  printf (_("warning threshold pair"));
+  
+  printf ("\n");
 
-       printf (_(UT_VERBOSE));
+  printf ("  -c, --critical=THRESHOLD");
+  
+  printf ("\n");
 
-       printf (_("\n\
-THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel\n\
-time (ms) which triggers a WARNING or CRITICAL state, and <pl> is the\n\
-percentage of packet loss to trigger an alarm state.\n"));
+  printf (_("critical threshold pair"));
+  
+  printf ("\n");
 
-       printf (_(UT_SUPPORT));
+  printf ("  -b, --bytes=INTEGER");
+  
+  printf (_("size of ICMP packet (default: %d)"),PACKET_SIZE);
+  
+  printf ("\n");
+
+  printf ("  -n, --number=INTEGER");
+  
+  printf ("\n");
+
+  printf (_("number of ICMP packets to send (default: %d)"),PACKET_COUNT);
+
+  printf ("\n");
+
+  printf (_(UT_VERBOSE));
+
+  printf ("\n");
+
+  printf (_("THRESHOLD is <rta>,<pl>%% where <rta> is the round trip average travel time (ms)"));
+  
+  printf ("\n");
+
+  printf (_("which triggers a WARNING or CRITICAL state, and <pl> is the percentage of"));
+  
+  printf ("\n");
+
+  printf (_("packet loss to trigger an alarm state."));
+
+  printf ("\n");
+  
+  printf (_(UT_SUPPORT));
 }
 
 
 void
 print_usage (void)
 {
-       printf ("Usage: %s <host_address>\n", progname);
+  printf (_("Usage:"));
+  printf (" %s <host_address>\n", progname);
 }
index 8548bbdbdfe2a662e230f42c6a06a84294320c90..9f9ff7d84fc6372f7ce91bc7d0428f53c4bad3c8 100644 (file)
@@ -19,7 +19,7 @@
 
 const char *progname = "check_game";
 const char *revision = "$Revision$";
-const char *copyright = "2002-2004";
+const char *copyright = "2002-2005";
 const char *email = "nagiosplug-devel@lists.sourceforge.net";
 
 #include "common.h"
@@ -31,12 +31,12 @@ int validate_arguments (void);
 void print_help (void);
 void print_usage (void);
 
-#define QSTAT_DATA_DELIMITER   ","
+#define QSTAT_DATA_DELIMITER  ","
 
-#define QSTAT_HOST_ERROR       "ERROR"
-#define QSTAT_HOST_DOWN                "DOWN"
-#define QSTAT_HOST_TIMEOUT     "TIMEOUT"
-#define QSTAT_MAX_RETURN_ARGS  12
+#define QSTAT_HOST_ERROR  "ERROR"
+#define QSTAT_HOST_DOWN   "DOWN"
+#define QSTAT_HOST_TIMEOUT  "TIMEOUT"
+#define QSTAT_MAX_RETURN_ARGS 12
 
 char *server_ip;
 char *game_type;
@@ -54,239 +54,241 @@ int qstat_ping_field = -1;
 int
 main (int argc, char **argv)
 {
-       char *command_line;
-       int result = STATE_UNKNOWN;
-       char *p, *ret[QSTAT_MAX_RETURN_ARGS];
-       size_t i = 0;
-       output chld_out;
-
-       setlocale (LC_ALL, "");
-       bindtextdomain (PACKAGE, LOCALEDIR);
-       textdomain (PACKAGE);
-       
-       if (process_arguments (argc, argv) == ERROR)
-               usage_va(_("Could not parse arguments"));
-
-       result = STATE_OK;
-
-       /* 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);
-
-       if (verbose > 0)
-               printf ("%s\n", command_line);
-
-       /* run the command. historically, this plugin ignores output on stderr,
-        * as well as return status of the qstat program */
-       (void)np_runcmd(command_line, &chld_out, NULL, 0);
-
-       /* sanity check */
-       /* 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 
-          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
-        */
-
-       if (!strncmp (chld_out.line[0], "unknown option", 14)) {
-               printf (_("CRITICAL - Host type parameter incorrect!\n"));
-               result = STATE_CRITICAL;
-               return result;
-       }
-
-       p = (char *) strtok (chld_out.line[0], QSTAT_DATA_DELIMITER);
-       while (p != NULL) {
-               ret[i] = p;
-               p = (char *) strtok (NULL, QSTAT_DATA_DELIMITER);
-               i++;
-               if (i >= QSTAT_MAX_RETURN_ARGS)
-                       break;
-       }
-
-       if (strstr (ret[2], QSTAT_HOST_ERROR)) {
-               printf (_("CRITICAL - Host not found\n"));
-               result = STATE_CRITICAL;
-       }
-       else if (strstr (ret[2], QSTAT_HOST_DOWN)) {
-               printf (_("CRITICAL - Game server down or unavailable\n"));
-               result = STATE_CRITICAL;
-       }
-       else if (strstr (ret[2], QSTAT_HOST_TIMEOUT)) {
-               printf (_("CRITICAL - Game server timeout\n"));
-               result = STATE_CRITICAL;
-       }
-       else {
-               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_map_field],
-                       ret[qstat_ping_field],
-                       perfdata ("players", atol(ret[qstat_game_players]), "",
-                                 FALSE, 0, FALSE, 0,
-                                 TRUE, 0, TRUE, atol(ret[qstat_game_players_max])),
-                       fperfdata ("ping", strtod(ret[qstat_ping_field], NULL), "",
-                                 FALSE, 0, FALSE, 0,
-                                 TRUE, 0, FALSE, 0));
-       }
-
-       return result;
+  char *command_line;
+  int result = STATE_UNKNOWN;
+  char *p, *ret[QSTAT_MAX_RETURN_ARGS];
+  size_t i = 0;
+  output chld_out;
+
+  setlocale (LC_ALL, "");
+  bindtextdomain (PACKAGE, LOCALEDIR);
+  textdomain (PACKAGE);
+  
+  if (process_arguments (argc, argv) == ERROR)
+    usage_va(_("Could not parse arguments"));
+
+  result = STATE_OK;
+
+  /* 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);
+
+  if (verbose > 0)
+    printf ("%s\n", command_line);
+
+  /* run the command. historically, this plugin ignores output on stderr,
+   * as well as return status of the qstat program */
+  (void)np_runcmd(command_line, &chld_out, NULL, 0);
+
+  /* sanity check */
+  /* 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 
+     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
+   */
+
+  if (!strncmp (chld_out.line[0], "unknown option", 14)) {
+    printf (_("CRITICAL - Host type parameter incorrect!\n"));
+    result = STATE_CRITICAL;
+    return result;
+  }
+
+  p = (char *) strtok (chld_out.line[0], QSTAT_DATA_DELIMITER);
+  while (p != NULL) {
+    ret[i] = p;
+    p = (char *) strtok (NULL, QSTAT_DATA_DELIMITER);
+    i++;
+    if (i >= QSTAT_MAX_RETURN_ARGS)
+      break;
+  }
+
+  if (strstr (ret[2], QSTAT_HOST_ERROR)) {
+    printf (_("CRITICAL - Host not found\n"));
+    result = STATE_CRITICAL;
+  }
+  else if (strstr (ret[2], QSTAT_HOST_DOWN)) {
+    printf (_("CRITICAL - Game server down or unavailable\n"));
+    result = STATE_CRITICAL;
+  }
+  else if (strstr (ret[2], QSTAT_HOST_TIMEOUT)) {
+    printf (_("CRITICAL - Game server timeout\n"));
+    result = STATE_CRITICAL;
+  }
+  else {
+    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_map_field],
+            ret[qstat_ping_field],
+            perfdata ("players", atol(ret[qstat_game_players]), "",
+                      FALSE, 0, FALSE, 0,
+                      TRUE, 0, TRUE, atol(ret[qstat_game_players_max])),
+            fperfdata ("ping", strtod(ret[qstat_ping_field], NULL), "",
+                      FALSE, 0, FALSE, 0,
+                      TRUE, 0, FALSE, 0));
+  }
+
+  return result;
 }
 
 
 int
 process_arguments (int argc, char **argv)
 {
-       int c;
-
-       int opt_index = 0;
-       static struct option long_opts[] = {
-               {"help", no_argument, 0, 'h'},
-               {"version", no_argument, 0, 'V'},
-               {"verbose", no_argument, 0, 'v'},
-               {"timeout", required_argument, 0, 't'},
-               {"hostname", required_argument, 0, 'H'},
-               {"port", required_argument, 0, 'P'},
-               {"game-type", required_argument, 0, 'G'},
-               {"map-field", required_argument, 0, 'm'},
-               {"ping-field", required_argument, 0, 'p'},
-               {"game-field", required_argument, 0, 'g'},
-               {"players-field", required_argument, 0, 129},
-               {"max-players-field", required_argument, 0, 130},
-               {0, 0, 0, 0}
-       };
-
-       if (argc < 2)
-               return ERROR;
-
-       for (c = 1; c < argc; c++) {
-               if (strcmp ("-mf", argv[c]) == 0)
-                       strcpy (argv[c], "-m");
-               else if (strcmp ("-pf", argv[c]) == 0)
-                       strcpy (argv[c], "-p");
-               else if (strcmp ("-gf", argv[c]) == 0)
-                       strcpy (argv[c], "-g");
-       }
-
-       while (1) {
-               c = getopt_long (argc, argv, "hVvt:H:P:G:g:p:m:", long_opts, &opt_index);
-
-               if (c == -1 || c == EOF)
-                       break;
-
-               switch (c) {
-               case 'h': /* help */
-                       print_help ();
-                       exit (STATE_OK);
-               case 'V': /* version */
-                       print_revision (progname, revision);
-                       exit (STATE_OK);
-               case 'v': /* version */
-                       verbose = TRUE;
-                       break;
-               case 't': /* timeout period */
-                       timeout_interval = atoi (optarg);
-                       break;
-               case 'H': /* hostname */
-                       if (strlen (optarg) >= MAX_HOST_ADDRESS_LENGTH)
-                               die (STATE_UNKNOWN, _("Input buffer overflow\n"));
-                       server_ip = optarg;
-                       break;
-               case 'P': /* port */
-                       port = atoi (optarg);
-                       break;
-               case 'G': /* hostname */
-                       if (strlen (optarg) >= MAX_INPUT_BUFFER)
-                               die (STATE_UNKNOWN, _("Input buffer overflow\n"));
-                       game_type = optarg;
-                       break;
-               case 'p': /* index of ping field */
-                       qstat_ping_field = atoi (optarg);
-                       if (qstat_ping_field < 0 || qstat_ping_field > QSTAT_MAX_RETURN_ARGS)
-                               return ERROR;
-                       break;
-               case 'm': /* index on map field */
-                       qstat_map_field = atoi (optarg);
-                       if (qstat_map_field < 0 || qstat_map_field > QSTAT_MAX_RETURN_ARGS)
-                               return ERROR;
-                       break;
-               case 'g': /* index of game field */
-                       qstat_game_field = atoi (optarg);
-                       if (qstat_game_field < 0 || qstat_game_field > QSTAT_MAX_RETURN_ARGS)
-                               return ERROR;
-                       break;
-               case 129: /* index of player count field */
-                       qstat_game_players = atoi (optarg);
-                       if (qstat_game_players_max == 0)
-                               qstat_game_players_max = qstat_game_players - 1;
-                       if (qstat_game_players < 0 || qstat_game_players > QSTAT_MAX_RETURN_ARGS)
-                               return ERROR;
-                       break;
-               case 130: /* index of max players field */
-                       qstat_game_players_max = atoi (optarg);
-                       if (qstat_game_players_max < 0 || qstat_game_players_max > QSTAT_MAX_RETURN_ARGS)
-                               return ERROR;
-                       break;
-               default: /* args not parsable */
-                       usage_va(_("Unknown argument - %s"), optarg);
-               }
-       }
-
-       c = optind;
-       /* first option is the game type */
-       if (!game_type && c<argc)
-               game_type = strdup (argv[c++]);
-
-       /* Second option is the server name */
-       if (!server_ip && c<argc)
-               server_ip = strdup (argv[c++]);
-
-       return validate_arguments ();
+  int c;
+
+  int opt_index = 0;
+  static struct option long_opts[] = {
+    {"help", no_argument, 0, 'h'},
+    {"version", no_argument, 0, 'V'},
+    {"verbose", no_argument, 0, 'v'},
+    {"timeout", required_argument, 0, 't'},
+    {"hostname", required_argument, 0, 'H'},
+    {"port", required_argument, 0, 'P'},
+    {"game-type", required_argument, 0, 'G'},
+    {"map-field", required_argument, 0, 'm'},
+    {"ping-field", required_argument, 0, 'p'},
+    {"game-field", required_argument, 0, 'g'},
+    {"players-field", required_argument, 0, 129},
+    {"max-players-field", required_argument, 0, 130},
+    {0, 0, 0, 0}
+  };
+
+  if (argc < 2)
+    return ERROR;
+
+  for (c = 1; c < argc; c++) {
+    if (strcmp ("-mf", argv[c]) == 0)
+      strcpy (argv[c], "-m");
+    else if (strcmp ("-pf", argv[c]) == 0)
+      strcpy (argv[c], "-p");
+    else if (strcmp ("-gf", argv[c]) == 0)
+      strcpy (argv[c], "-g");
+  }
+
+  while (1) {
+    c = getopt_long (argc, argv, "hVvt:H:P:G:g:p:m:", long_opts, &opt_index);
+
+    if (c == -1 || c == EOF)
+      break;
+
+    switch (c) {
+    case 'h': /* help */
+      print_help ();
+      exit (STATE_OK);
+    case 'V': /* version */
+      print_revision (progname, revision);
+      exit (STATE_OK);
+    case 'v': /* version */
+      verbose = TRUE;
+      break;
+    case 't': /* timeout period */
+      timeout_interval = atoi (optarg);
+      break;
+    case 'H': /* hostname */
+      if (strlen (optarg) >= MAX_HOST_ADDRESS_LENGTH)
+        die (STATE_UNKNOWN, _("Input buffer overflow\n"));
+      server_ip = optarg;
+      break;
+    case 'P': /* port */
+      port = atoi (optarg);
+      break;
+    case 'G': /* hostname */
+      if (strlen (optarg) >= MAX_INPUT_BUFFER)
+        die (STATE_UNKNOWN, _("Input buffer overflow\n"));
+      game_type = optarg;
+      break;
+    case 'p': /* index of ping field */
+      qstat_ping_field = atoi (optarg);
+      if (qstat_ping_field < 0 || qstat_ping_field > QSTAT_MAX_RETURN_ARGS)
+        return ERROR;
+      break;
+    case 'm': /* index on map field */
+      qstat_map_field = atoi (optarg);
+      if (qstat_map_field < 0 || qstat_map_field > QSTAT_MAX_RETURN_ARGS)
+        return ERROR;
+      break;
+    case 'g': /* index of game field */
+      qstat_game_field = atoi (optarg);
+      if (qstat_game_field < 0 || qstat_game_field > QSTAT_MAX_RETURN_ARGS)
+        return ERROR;
+      break;
+    case 129: /* index of player count field */
+      qstat_game_players = atoi (optarg);
+      if (qstat_game_players_max == 0)
+        qstat_game_players_max = qstat_game_players - 1;
+      if (qstat_game_players < 0 || qstat_game_players > QSTAT_MAX_RETURN_ARGS)
+        return ERROR;
+      break;
+    case 130: /* index of max players field */
+      qstat_game_players_max = atoi (optarg);
+      if (qstat_game_players_max < 0 || qstat_game_players_max > QSTAT_MAX_RETURN_ARGS)
+        return ERROR;
+      break;
+    default: /* args not parsable */
+      usage_va(_("Unknown argument - %s"), optarg);
+    }
+  }
+
+  c = optind;
+  /* first option is the game type */
+  if (!game_type && c<argc)
+    game_type = strdup (argv[c++]);
+
+  /* Second option is the server name */
+  if (!server_ip && c<argc)
+    server_ip = strdup (argv[c++]);
+
+  return validate_arguments ();
 }
 
 
 int
 validate_arguments (void)
 {
-       if (qstat_game_players_max < 0)
-               qstat_game_players_max = 4;
+  if (qstat_game_players_max < 0)
+    qstat_game_players_max = 4;
 
-       if (qstat_game_players < 0)
-               qstat_game_players = 5;
+  if (qstat_game_players < 0)
+    qstat_game_players = 5;
 
-       if (qstat_game_field < 0)
-               qstat_game_field = 2;
+  if (qstat_game_field < 0)
+    qstat_game_field = 2;
 
-       if (qstat_map_field < 0)
-               qstat_map_field = 3;
+  if (qstat_map_field < 0)
+    qstat_map_field = 3;
 
-       if (qstat_ping_field < 0)
-               qstat_ping_field = 5;
+  if (qstat_ping_field < 0)
+    qstat_ping_field = 5;
 
-       return OK;
+  return OK;
 }
 
 
 void
 print_help (void)
 {
-       print_revision (progname, revision);
+  print_revision (progname, revision);
 
-       printf ("Copyright (c) 1999 Ian Cass, Knowledge Matters Limited\n");
-       printf (COPYRIGHT, copyright, email);
+  printf ("Copyright (c) 1999 Ian Cass, Knowledge Matters Limited\n");
+  printf (COPYRIGHT, copyright, email);
 
-       printf (_("This plugin tests game server connections with the specified host."));
+  printf (_("This plugin tests game server connections with the specified host."));
 
-       print_usage ();
+ printf ("\n\n");
+  print_usage ();
 
-       printf (_(UT_HELP_VRSN));
+  printf (_(UT_HELP_VRSN));
 
-       printf (_("\
+  printf (_("\
 <game>        = Game type that is recognised by qstat (without the leading dash)\n\
 <ip_address>  = The IP address of the device you wish to query\n\
  [port]        = Optional port of which to connect\n\
@@ -294,15 +296,25 @@ print_help (void)
  [map_field]   = Field number in raw qstat output that contains map name\n\
  [ping_field]  = Field number in raw qstat output that contains ping time\n"));
 
-       printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
+  printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
 
-       printf (_("\n\
-Notes:\n\
-- This plugin uses the 'qstat' command, the popular game server status query tool .\n\
-  If you don't have the package installed, you will need to download it from\n\
-  http://www.activesw.com/people/steve/qstat.html before you can use this plugin.\n"));
+  printf (_("Notes:"));
+  
+  printf ("\n");
 
-       printf (_(UT_SUPPORT));
+  printf (_("This plugin uses the 'qstat' command, the popular game server status query tool ."));
+  
+  printf ("\n");
+
+  printf (_("If you don't have the package installed, you will need to download it from"));
+  
+  printf ("\n");
+
+  printf (_("http://www.activesw.com/people/steve/qstat.html before you can use this plugin."));
+
+  printf ("\n");
+
+  printf (_(UT_SUPPORT));
 }
 
 
@@ -310,9 +322,8 @@ Notes:\n\
 void
 print_usage (void)
 {
-       printf ("\
-Usage: %s <game> <ip_address> [-p port] [-gf game_field] [-mf map_field]\n\
-                  [-pf ping_field]\n", progname);
+  printf (_("Usage:"));
+  printf (" %s <game> <ip_address> [-p port] [-gf game_field] [-mf map_field] [-pf ping_field]\n", progname);
 }
 
 /******************************************************************************