diff --git a/Userland/Libraries/LibCore/ArgsParser.h b/Userland/Libraries/LibCore/ArgsParser.h index 389b79c946..bfde098f34 100644 --- a/Userland/Libraries/LibCore/ArgsParser.h +++ b/Userland/Libraries/LibCore/ArgsParser.h @@ -73,6 +73,19 @@ public: bool parse(int argc, char* const* argv, FailureBehavior failure_behavior = FailureBehavior::PrintUsageAndExit); bool parse(Main::Arguments const& arguments, FailureBehavior failure_behavior = FailureBehavior::PrintUsageAndExit) { + if (arguments.argv == nullptr && arguments.argc == 0) { + // Allocate the data from arguments.strings instead. + Vector strings; + Vector data; + strings.ensure_capacity(arguments.strings.size()); + data.ensure_capacity(arguments.strings.size()); + for (auto& entry : arguments.strings) { + strings.append(entry); + data.append(strings.last().characters()); + } + return parse(data.size(), const_cast(data.data()), failure_behavior); + } + return parse(arguments.argc, arguments.argv, failure_behavior); }