Просмотр исходного кода

remove old call_getopt code, fix bug taking single float, allow colon as separators in additin to commas

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@141 f882894a-f735-0410-b71e-b25c423dba1c
Karl DeBisschop 23 лет назад
Родитель
Сommit
44d249d12a
1 измененных файлов с 58 добавлено и 67 удалено
  1. 58 67
      plugins/check_load.c

+ 58 - 67
plugins/check_load.c

@@ -47,7 +47,6 @@
 #define PROGNAME "check_load"
 
 int process_arguments (int argc, char **argv);
-int call_getopt (int argc, char **argv);
 int validate_arguments (void);
 void print_usage (void);
 void print_help (void);
@@ -151,40 +150,6 @@ main (int argc, char **argv)
 /* process command-line arguments */
 int
 process_arguments (int argc, char **argv)
-{
-	int c;
-
-	if (argc < 2)
-		return ERROR;
-
-	c = 0;
-	while (c += (call_getopt (argc - c, &argv[c]))) {
-		if (argc <= c)
-			break;
-
-		if (wload1 < 0 && is_nonnegative (argv[c]))
-			wload1 = atof (argv[c]);
-		else if (cload1 < 0 && is_nonnegative (argv[c]))
-			cload1 = atof (argv[c]);
-		else if (wload5 < 0 && is_nonnegative (argv[c]))
-			wload5 = atof (argv[c]);
-		else if (cload5 < 0 && is_nonnegative (argv[c]))
-			cload5 = atof (argv[c]);
-		else if (wload15 < 0 && is_nonnegative (argv[c]))
-			wload15 = atof (argv[c]);
-		else if (cload15 < 0 && is_nonnegative (argv[c]))
-			cload15 = atof (argv[c]);
-	}
-
-	return validate_arguments ();
-}
-
-
-
-
-
-int
-call_getopt (int argc, char **argv)
 {
 	int c, i = 0;
 
@@ -199,59 +164,53 @@ call_getopt (int argc, char **argv)
 	};
 #endif
 
+#define OPTCHARS "Vhc:w:"
+
+	if (argc < 2)
+		return ERROR;
+
 	while (1) {
 #ifdef HAVE_GETOPT_H
-		c = getopt_long (argc, argv, "+?Vhc:w:", long_options, &option_index);
+		c = getopt_long (argc, argv, OPTCHARS, long_options, &option_index);
 #else
-		c = getopt (argc, argv, "+?Vhc:w:");
+		c = getopt (argc, argv, OPTCHARS);
 #endif
-
-		i++;
-
 		if (c == -1 || c == EOF)
 			break;
 
-		switch (c) {
-		case 'c':
-		case 'w':
-			i++;
-		}
-
 		switch (c) {
 		case 'w':									/* warning time threshold */
 			if (is_intnonneg (optarg)) {
-				if (wload1 < 0 && is_nonnegative (argv[c]))
-					wload1 = atof (argv[c]);
-				else if (wload5 < 0 && is_nonnegative (argv[c]))
-					wload5 = atof (argv[c]);
-				else if (wload15 < 0 && is_nonnegative (argv[c]))
-					wload15 = atof (argv[c]);
+				wload1 = atof (optarg);
+				wload5 = atof (optarg);
+				wload15 = atof (optarg);
 				break;
 			}
 			else if (strstr (optarg, ",") &&
-							 sscanf (optarg, "%f,%f,%f", &wload1, &wload5, &wload15) == 3) {
+								 sscanf (optarg, "%f,%f,%f", &wload1, &wload5, &wload15) == 3)
 				break;
-			}
-			else {
+			else if (strstr (optarg, ":") &&
+							 sscanf (optarg, "%f:%f:%f", &wload1, &wload5, &wload15) == 3)
+				break;
+			else
 				usage ("Warning threshold must be float or float triplet!\n");
-			}
+			break;
 		case 'c':									/* critical time threshold */
 			if (is_intnonneg (optarg)) {
-				if (cload1 < 0 && is_nonnegative (argv[c]))
-					cload1 = atof (argv[c]);
-				else if (cload5 < 0 && is_nonnegative (argv[c]))
-					cload5 = atof (argv[c]);
-				else if (cload15 < 0 && is_nonnegative (argv[c]))
-					cload15 = atof (argv[c]);
+				cload1 = atof (optarg);
+				cload5 = atof (optarg);
+				cload15 = atof (optarg);
 				break;
 			}
 			else if (strstr (optarg, ",") &&
-							 sscanf (optarg, "%f,%f,%f", &cload1, &cload5, &cload15) == 3) {
+							 sscanf (optarg, "%f,%f,%f", &cload1, &cload5, &cload15) == 3)
 				break;
-			}
-			else {
+			else if (strstr (optarg, ":") &&
+							 sscanf (optarg, "%f:%f:%f", &cload1, &cload5, &cload15) == 3)
+				break;
+			else
 				usage ("Critical threshold must be float or float triplet!\n");
-			}
+			break;
 		case 'V':									/* version */
 			print_revision (my_basename (argv[0]), "$Revision$");
 			exit (STATE_OK);
@@ -262,7 +221,39 @@ call_getopt (int argc, char **argv)
 			usage ("Invalid argument\n");
 		}
 	}
-	return i;
+
+	c = optind;
+	if (c == argc)
+		return validate_arguments ();
+	if (wload1 < 0 && is_nonnegative (argv[c]))
+		wload1 = atof (argv[c]);
+
+	if (c == argc)
+		return validate_arguments ();
+	if (cload1 < 0 && is_nonnegative (argv[c]))
+		cload1 = atof (argv[c]);
+
+	if (c == argc)
+		return validate_arguments ();
+	if (wload5 < 0 && is_nonnegative (argv[c]))
+		wload5 = atof (argv[c]);
+
+	if (c == argc)
+		return validate_arguments ();
+	if (cload5 < 0 && is_nonnegative (argv[c]))
+		cload5 = atof (argv[c]);
+
+	if (c == argc)
+		return validate_arguments ();
+	if (wload15 < 0 && is_nonnegative (argv[c]))
+		wload15 = atof (argv[c]);
+
+	if (c == argc)
+		return validate_arguments ();
+	if (cload15 < 0 && is_nonnegative (argv[c]))
+		cload15 = atof (argv[c]);
+
+	return validate_arguments ();
 }