Browse Source

remove broken call_getopt stuff

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@136 f882894a-f735-0410-b71e-b25c423dba1c
Karl DeBisschop 23 years ago
parent
commit
1fb42320aa
1 changed files with 96 additions and 108 deletions
  1. 96 108
      plugins/check_ping.c

+ 96 - 108
plugins/check_ping.c

@@ -85,6 +85,7 @@ main (int argc, char **argv)
 
 	if (process_arguments (argc, argv) == ERROR)
 		usage ("Could not parse arguments");
+	exit;
 
 	/* does the host address of number of packets argument come first? */
 #ifdef PING_PACKETS_FIRST
@@ -150,7 +151,20 @@ main (int argc, char **argv)
 int
 process_arguments (int argc, char **argv)
 {
-	int c;
+	int c, i = 1;
+
+#ifdef HAVE_GETOPT_H
+	int option_index = 0;
+	static struct option long_options[] = {
+		STD_LONG_OPTS,
+		{"packets", required_argument, 0, 'p'},
+		{"nohtml", no_argument, 0, 'n'},
+		{"link", no_argument, 0, 'L'},
+		{0, 0, 0, 0}
+	};
+#endif
+
+#define OPTCHARS "Vvht:c:w:H:p:nL"
 
 	if (argc < 2)
 		return ERROR;
@@ -162,138 +176,45 @@ process_arguments (int argc, char **argv)
 			strcpy (argv[c], "-n");
 	}
 
-	c = 0;
-	while ((c += call_getopt (argc - c, &argv[c])) < argc) {
-
-		if (is_option (argv[c]))
-			continue;
-
-		if (server_address == NULL) {
-			if (is_host (argv[c]) == FALSE) {
-				printf ("Invalid host name/address: %s\n\n", argv[c]);
-				return ERROR;
-			}
-			server_address = argv[c];
-		}
-		else if (wpl == UNKNOWN_PACKET_LOSS) {
-			if (is_intpercent (argv[c]) == FALSE) {
-				printf ("<wpl> (%s) must be an integer percentage\n", argv[c]);
-				return ERROR;
-			}
-			wpl = atoi (argv[c]);
-		}
-		else if (cpl == UNKNOWN_PACKET_LOSS) {
-			if (is_intpercent (argv[c]) == FALSE) {
-				printf ("<cpl> (%s) must be an integer percentage\n", argv[c]);
-				return ERROR;
-			}
-			cpl = atoi (argv[c]);
-		}
-		else if (wrta == UNKNOWN_TRIP_TIME) {
-			if (is_negative (argv[c])) {
-				printf ("<wrta> (%s) must be a non-negative number\n", argv[c]);
-				return ERROR;
-			}
-			wrta = atof (argv[c]);
-		}
-		else if (crta == UNKNOWN_TRIP_TIME) {
-			if (is_negative (argv[c])) {
-				printf ("<crta> (%s) must be a non-negative number\n", argv[c]);
-				return ERROR;
-			}
-			crta = atof (argv[c]);
-		}
-		else if (max_packets == -1) {
-			if (is_intnonneg (argv[c])) {
-				max_packets = atoi (argv[c]);
-			}
-			else {
-				printf ("<max_packets> (%s) must be a non-negative number\n",
-								argv[c]);
-				return ERROR;
-			}
-		}
-
-	}
-
-	return validate_arguments ();
-}
-
-int
-call_getopt (int argc, char **argv)
-{
-	int c, i = 0;
-
-#ifdef HAVE_GETOPT_H
-	int option_index = 0;
-	static struct option long_options[] = {
-		{"help", no_argument, 0, 'h'},
-		{"version", no_argument, 0, 'V'},
-		{"verbose", no_argument, 0, 'v'},
-		{"nohtml", no_argument, 0, 'n'},
-		{"link", no_argument, 0, 'L'},
-		{"timeout", required_argument, 0, 't'},
-		{"critical", required_argument, 0, 'c'},
-		{"warning", required_argument, 0, 'w'},
-		{"hostname", required_argument, 0, 'H'},
-		{"packets", required_argument, 0, 'p'},
-		{0, 0, 0, 0}
-	};
-#endif
-
 	while (1) {
 #ifdef HAVE_GETOPT_H
-		c =
-			getopt_long (argc, argv, "+hVvt:c:w:H:p:nL", long_options,
-									 &option_index);
+		c = getopt_long (argc, argv, OPTCHARS, long_options, &option_index);
 #else
-		c = getopt (argc, argv, "+hVvt:c:w:H:p:nL");
+		c = getopt (argc, argv, OPTCHARS);
 #endif
-
-		i++;
-
-		if (c == -1 || c == EOF || c == 1)
+		if (c == -1 || c == EOF)
 			break;
 
 		switch (c) {
-		case 't':
-		case 'c':
-		case 'w':
-		case 'H':
-		case 'p':
-			i++;
-		}
-
-		switch (c) {
-		case '?':									/* print short usage statement if args not parsable */
+		case '?':	/* usage */
 			usage2 ("Unknown argument", optarg);
-		case 'h':									/* help */
+		case 'h':	/* help */
 			print_help ();
 			exit (STATE_OK);
-		case 'V':									/* version */
+		case 'V':	/* version */
 			print_revision (PROGNAME, REVISION);
 			exit (STATE_OK);
-		case 't':									/* timeout period */
+		case 't':	/* timeout period */
 			timeout_interval = atoi (optarg);
 			break;
-		case 'v':									/* verbose mode */
+		case 'v':	/* verbose mode */
 			verbose = TRUE;
 			break;
-		case 'H':									/* hostname */
+		case 'H':	/* hostname */
 			if (is_host (optarg) == FALSE)
 				usage2 ("Invalid host name/address", optarg);
 			server_address = optarg;
 			break;
-		case 'p':									/* number of packets to send */
+		case 'p':	/* number of packets to send */
 			if (is_intnonneg (optarg))
 				max_packets = atoi (optarg);
 			else
 				usage2 ("<max_packets> (%s) must be a non-negative number\n", optarg);
 			break;
-		case 'n':									/* no HTML */
+		case 'n':	/* no HTML */
 			display_html = FALSE;
 			break;
-		case 'L':									/* show HTML */
+		case 'L':	/* show HTML */
 			display_html = TRUE;
 			break;
 		case 'c':
@@ -305,7 +226,75 @@ call_getopt (int argc, char **argv)
 		}
 	}
 
-	return i;
+	c = optind;
+	if (c == argc)
+		return validate_arguments ();
+
+	if (server_address == NULL) {
+		if (is_host (argv[c]) == FALSE) {
+			printf ("Invalid host name/address: %s\n\n", argv[c]);
+			return ERROR;
+		} else {
+			server_address = argv[c++];
+			if (c == argc)
+				return validate_arguments ();
+		}
+	}
+
+	if (wpl == UNKNOWN_PACKET_LOSS) {
+		if (is_intpercent (argv[c]) == FALSE) {
+			printf ("<wpl> (%s) must be an integer percentage\n", argv[c]);
+			return ERROR;
+		} else {
+			wpl = atoi (argv[c++]);
+			if (c == argc)
+				return validate_arguments ();
+		}
+	}
+
+	if (cpl == UNKNOWN_PACKET_LOSS) {
+		if (is_intpercent (argv[c]) == FALSE) {
+			printf ("<cpl> (%s) must be an integer percentage\n", argv[c]);
+			return ERROR;
+		} else {
+			cpl = atoi (argv[c++]);
+			if (c == argc)
+				return validate_arguments ();
+		}
+	}
+
+	if (wrta == UNKNOWN_TRIP_TIME) {
+		if (is_negative (argv[c])) {
+			printf ("<wrta> (%s) must be a non-negative number\n", argv[c]);
+			return ERROR;
+		} else {
+			wrta = atof (argv[c++]);
+			if (c == argc)
+				return validate_arguments ();
+		}
+	}
+
+	if (crta == UNKNOWN_TRIP_TIME) {
+		if (is_negative (argv[c])) {
+			printf ("<crta> (%s) must be a non-negative number\n", argv[c]);
+			return ERROR;
+		} else {
+			crta = atof (argv[c++]);
+			if (c == argc)
+				return validate_arguments ();
+		}
+	}
+
+	if (max_packets == -1) {
+		if (is_intnonneg (argv[c])) {
+			max_packets = atoi (argv[c++]);
+		}	else {
+			printf ("<max_packets> (%s) must be a non-negative number\n", argv[c]);
+			return ERROR;
+		}
+	}
+
+	return validate_arguments ();
 }
 
 int
@@ -319,7 +308,6 @@ get_threshold (char *arg, float *trta, int *tpl)
 		return OK;
 	else
 		usage2 ("%s: Warning threshold must be integer or percentage!\n\n", arg);
-
 }
 
 int