From 180e95f06a4c0a97f58b9f791d0b48298fdd7def Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Thu, 15 Jul 2021 23:14:46 +0300 Subject: cam: options: Fail parsing when non-option arguments are found The options parser currently ignores non-option arguments silently, which is confusing. It's a common error to run 'cam -c1 -C 10' and expect only 10 frames to be captured. As the -C option takes an optional argument, the number 10 is interpreted as a non-option argument instead of the argument to the -C option. Fail parsing with an appropriate message and print usage information when a non-option argument is found. The parser may be extended later to accept non-option arguments when the application has a use for them. Signed-off-by: Laurent Pinchart Reviewed-by: Jacopo Mondi --- src/cam/options.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src') diff --git a/src/cam/options.cpp b/src/cam/options.cpp index 6e0d802c..33bc512e 100644 --- a/src/cam/options.cpp +++ b/src/cam/options.cpp @@ -945,6 +945,13 @@ OptionsParser::Options OptionsParser::parse(int argc, char **argv) } } + if (optind < argc) { + std::cerr << "Invalid non-option argument '" << argv[optind] + << "'" << std::endl; + usage(); + return options; + } + options.valid_ = true; return options; } -- cgit v1.2.1