[libcamera-devel] [PATCH v3 14/33] cam: options: Fail parsing when non-option arguments are found

Laurent Pinchart laurent.pinchart at ideasonboard.com
Thu Jul 15 23:14:40 CEST 2021


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 at ideasonboard.com>
---
 src/cam/options.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/cam/options.cpp b/src/cam/options.cpp
index 6e0d802cb986..33bc512e6571 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;
 }
-- 
Regards,

Laurent Pinchart



More information about the libcamera-devel mailing list