Fix klibc getopt_long_only() for optional arguments
[fio.git] / lib / getopt_long.c
index 6e8abc0678d1280f415f9c2d4e20f79778a36982..70894e3281e04f7830cc583c2079affb9c545518 100644 (file)
@@ -126,7 +126,16 @@ int getopt_long_only(int argc, char *const *argv, const char *optstring,
                        } else {
                                /* Argument-taking option with non-attached
                                   argument */
-                               if (argv[optind + 1]) {
+                               if (osptr[2] == ':') {
+                                       if (argv[optind + 1]) {
+                                               optarg = (char *)argv[optind+1];
+                                               optind += 2;
+                                       } else {
+                                               optarg = NULL;
+                                               optind++;
+                                       }
+                                       return opt;
+                               } else if (argv[optind + 1]) {
                                        optarg = (char *)argv[optind+1];
                                        optind += 2;
                                } else {