summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-15 23:14:46 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-22 17:13:36 +0300
commit180e95f06a4c0a97f58b9f791d0b48298fdd7def (patch)
treea9ac166ff6bb8d290548a09495596c30e439d0d9
parent3c636755607919bc99b2219683a402660740f0db (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>
-rw-r--r--src/cam/options.cpp7
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;
}