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 <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Laurent Pinchart
2021-07-15 23:14:46 +03:00
parent 3c63675560
commit 180e95f06a
+7
View File
@@ -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;
}