فهرست منبع

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 سال پیش
والد
کامیت
63cac4e29a
1فایلهای تغییر یافته به همراه11 افزوده شده و 13 حذف شده
  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) {