[libcamera-devel,v2,4/8] cam: options: Return whether addOption() succeeds or not

Message ID 20190131234721.22606-5-laurent.pinchart@ideasonboard.com
State Accepted
Headers show
Series
  • cam: add --format option to configure a stream
Related show

Commit Message

Laurent Pinchart Jan. 31, 2019, 11:47 p.m. UTC
From: Niklas Söderlund <niklas.soderlund@ragnatech.se>

To later extend the options handling to cover subparsing of arguments it
will be needed to know if the addition of the option itself was
successful or not. The information is already present in addOption()
this change just makes it available.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/cam/options.cpp | 11 ++++++-----
 src/cam/options.h   |  2 +-
 2 files changed, 7 insertions(+), 6 deletions(-)

Patch

diff --git a/src/cam/options.cpp b/src/cam/options.cpp
index f48bd1fcf1b4..c13022ce1b84 100644
--- a/src/cam/options.cpp
+++ b/src/cam/options.cpp
@@ -38,7 +38,7 @@  void OptionsBase<T>::clear()
 
 template class OptionsBase<int>;
 
-void OptionsParser::addOption(int opt, const char *help, const char *name,
+bool OptionsParser::addOption(int opt, const char *help, const char *name,
 			      OptionArgument argument, const char *argumentName)
 {
 	/*
@@ -46,18 +46,19 @@  void OptionsParser::addOption(int opt, const char *help, const char *name,
 	 * If an argument is accepted, it must be described by argumentName.
 	 */
 	if (!isalnum(opt) && !name)
-		return;
+		return false;
 	if (!help || help[0] == '\0')
-		return;
+		return false;
 	if (argument != ArgumentNone && !argumentName)
-		return;
+		return false;
 
 	/* Reject duplicate options. */
 	if (optionsMap_.find(opt) != optionsMap_.end())
-		return;
+		return false;
 
 	options_.push_back(Option({ opt, name, argument, argumentName, help }));
 	optionsMap_[opt] = &options_.back();
+	return true;
 }
 
 OptionsParser::Options OptionsParser::parse(int argc, char **argv)
diff --git a/src/cam/options.h b/src/cam/options.h
index 2bf1f160f3c0..2272385a0b83 100644
--- a/src/cam/options.h
+++ b/src/cam/options.h
@@ -49,7 +49,7 @@  public:
 	{
 	};
 
-	void addOption(int opt, const char *help, const char *name = nullptr,
+	bool addOption(int opt, const char *help, const char *name = nullptr,
 		       OptionArgument argument = ArgumentNone,
 		       const char *argumentName = nullptr);