From b8d7d43899fbfbedbfddc0a6ad58098341d7696b Mon Sep 17 00:00:00 2001 From: a dinosaur Date: Thu, 11 Apr 2024 16:21:33 +1000 Subject: [PATCH] argparse: fix unknown flags not being reported --- src/argparse.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/argparse.cpp b/src/argparse.cpp index b91eca7..071e910 100644 --- a/src/argparse.cpp +++ b/src/argparse.cpp @@ -99,19 +99,18 @@ ArgParse::ParseCtrl ArgParse::ParserState::Next(const std::string_view token) { flagChar = flag.value(); const auto opt = getOption(flagChar); - if (opt.has_value()) + if (!opt.has_value()) + return ParseCtrl::QUIT_ERR_UNKNOWN; + bool expect = !opt.value().get().argumentName.empty(); + if (token.length() <= 2) { - bool expect = !opt.value().get().argumentName.empty(); - if (token.length() <= 2) - { - expectArg = expect; - if (!expectArg) - return handler(flagChar, ""); - } - else - { - return handler(flagChar, expect ? token.substr(2) : ""); - } + expectArg = expect; + if (!expectArg) + return handler(flagChar, ""); + } + else + { + return handler(flagChar, expect ? token.substr(2) : ""); } } else if (!token.empty())