Code

AF indepedent routines introduced.
[nagiosplug.git] / plugins / check_dns.c
index f9cf28890ed2855548cac095371f1438953e2cc4..19649f50045bbfdde8c1a8f27239bc4b2dea11b6 100644 (file)
@@ -48,7 +48,7 @@
 #include "popen.h"
 #include "utils.h"
 
-#define PROGNAME "check_dns"
+const char *progname = "check_dns";
 #define REVISION "$Revision$"
 #define COPYRIGHT "2000-2002"
 
@@ -88,7 +88,7 @@ main (int argc, char **argv)
        }
 
        /* get the command to run */
-       sprintf (&command_line, "%s %s %s", NSLOOKUP_COMMAND,   query_address, dns_server);
+       asprintf (&command_line, "%s %s %s", NSLOOKUP_COMMAND,  query_address, dns_server);
 
        alarm (timeout_interval);
        time (&start_time);
@@ -132,7 +132,11 @@ main (int argc, char **argv)
                                printf ("%s\n", input_buffer);
 
                        if ((temp_buffer = index (input_buffer, ':'))) {
-                               address = strscpy (address, temp_buffer + 2);
+                               temp_buffer++;
+                               /* Strip leading spaces */
+                               for (; *temp_buffer != '\0' && *temp_buffer == ' '; temp_buffer++)
+                                       /* NOOP */;
+                               address = strscpy (address, temp_buffer);
                                strip (address);
                                result = STATE_OK;
                        }
@@ -292,14 +296,14 @@ process_arguments (int argc, char **argv)
 
                switch (c) {
                case '?': /* args not parsable */
-                       printf ("%s: Unknown argument: %s\n\n", PROGNAME, optarg);
+                       printf ("%s: Unknown argument: %s\n\n", progname, optarg);
                        print_usage ();
                        exit (STATE_UNKNOWN);
                case 'h': /* help */
                        print_help ();
                        exit (STATE_OK);
                case 'V': /* version */
-                       print_revision (PROGNAME, REVISION);
+                       print_revision (progname, REVISION);
                        exit (STATE_OK);
                case 'v': /* version */
                        verbose = TRUE;
@@ -352,22 +356,22 @@ process_arguments (int argc, char **argv)
        }
 
        c = optind;
-       if (query_address[0] == 0) {
-               if (is_host (argv[c]) == FALSE) {
+       if (strlen(query_address)==0 && c<argc) {
+               if (is_host(argv[c])==FALSE) {
                        printf ("Invalid name/address: %s\n\n", argv[c]);
                        return ERROR;
                }
-               if (strlen (argv[c]) >= ADDRESS_LENGTH)
+               if (strlen(argv[c])>=ADDRESS_LENGTH)
                        terminate (STATE_UNKNOWN, "Input buffer overflow\n");
                strcpy (query_address, argv[c++]);
        }
 
-       if (dns_server[0] == 0) {
-               if (is_host (argv[c]) == FALSE) {
+       if (strlen(dns_server)==0 && c<argc) {
+               if (is_host(argv[c]) == FALSE) {
                        printf ("Invalid name/address: %s\n\n", argv[c]);
                        return ERROR;
                }
-               if (strlen (argv[c]) >= ADDRESS_LENGTH)
+               if (strlen(argv[c]) >= ADDRESS_LENGTH)
                        terminate (STATE_UNKNOWN, "Input buffer overflow\n");
                strcpy (dns_server, argv[c++]);
        }
@@ -388,13 +392,13 @@ void
 print_usage (void)
 {
        printf ("Usage: %s -H host [-s server] [-a expected-address] [-t timeout]\n" "       %s --help\n"
-                                       "       %s --version\n", PROGNAME, PROGNAME, PROGNAME);
+                                       "       %s --version\n", progname, progname, progname);
 }
 
 void
 print_help (void)
 {
-       print_revision (PROGNAME, REVISION);
+       print_revision (progname, REVISION);
        printf ("Copyright (c) 1999 Ethan Galstad (nagios@nagios.org)\n\n");
        print_usage ();
        printf