Fix: argpar: Error out when passing an argument to long option that takes no argument
authorSimon Marchi <simon.marchi@efficios.com>
Fri, 9 Apr 2021 16:48:30 +0000 (12:48 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 22 Apr 2021 18:30:03 +0000 (14:30 -0400)
If the user defines a long option `--foo` and passes `--foo=arg`, the
current behavior is that the option foo is recognized and the argument
is ignored.  Change that to be an error.

It is currently not possible to pass arguments to short options using an
equal sign, so this doesn't apply to short options.

Equivalent accepted change in argpar: https://review.lttng.org/c/argpar/+/5361

Change-Id: I6fd6271abb7e271704db1e60f680729931a1fbe1
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/argpar/argpar.c

index bf19808c54715657330d926268a3f04dd17a350c..68bb5a426d5fb471747e7cd81495a959a12ec7c2 100644 (file)
@@ -477,6 +477,15 @@ enum parse_orig_arg_opt_ret parse_long_opt(const char * const long_opt_arg,
                        opt_arg = next_orig_arg;
                        used_next_orig_arg = true;
                }
+       } else if (eq_pos) {
+               /*
+                * Unexpected `--opt=arg` style for a long option which
+                * doesn't accept an argument.
+                */
+               argpar_string_append_printf(error,
+                       "Unexpected argument for option `--%s`",
+                       long_opt_name);
+               goto error;
        }
 
        /* Create and append option argument */
This page took 0.026735 seconds and 5 git commands to generate.