Browse Source

simplify part of getopt_long

as a result of commit e8e4e56a8ce1f3d7e4a027ff5478f2f8ea70c46b,
the later code path for setting optarg to a null pointer is no longer
necessary, and removing it eliminates an indention level and arguably
makes the code more readable.
Rich Felker 10 năm trước cách đây
mục cha
commit
63cac4e29a
1 tập tin đã thay đổi với 11 bổ sung13 xóa
  1. 11 13
      src/misc/getopt_long.c

+ 11 - 13
src/misc/getopt_long.c

@@ -87,19 +87,17 @@ static int __getopt_long_core(int argc, char *const *argv, const char *optstring
 					return '?';
 				}
 				optarg = opt+1;
-			} else {
-				if (longopts[i].has_arg == required_argument) {
-					if (!(optarg = argv[optind])) {
-						if (colon) return ':';
-						if (!opterr) return '?';
-						__getopt_msg(argv[0],
-							": option requires an argument: ",
-							longopts[i].name,
-							strlen(longopts[i].name));
-						return '?';
-					}
-					optind++;
-				} else optarg = NULL;
+			} else if (longopts[i].has_arg == required_argument) {
+				if (!(optarg = argv[optind])) {
+					if (colon) return ':';
+					if (!opterr) return '?';
+					__getopt_msg(argv[0],
+						": option requires an argument: ",
+						longopts[i].name,
+						strlen(longopts[i].name));
+					return '?';
+				}
+				optind++;
 			}
 			if (idx) *idx = i;
 			if (longopts[i].flag) {