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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user