diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-07-15 23:14:46 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-07-22 17:13:36 +0300 |
commit | 180e95f06a4c0a97f58b9f791d0b48298fdd7def (patch) | |
tree | a9ac166ff6bb8d290548a09495596c30e439d0d9 /src/cam/options.cpp | |
parent | 3c636755607919bc99b2219683a402660740f0db (diff) |
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>
Diffstat (limited to 'src/cam/options.cpp')
-rw-r--r-- | src/cam/options.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
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; } |