Skip to content
14 changes: 11 additions & 3 deletions src/shared/inc/CommandLine.h
Original file line number Diff line number Diff line change
Expand Up @@ -307,15 +307,17 @@ class ArgumentParser
public:
#ifdef WIN32

ArgumentParser(const std::wstring& CommandLine, LPCWSTR Name, int StartIndex = 1) : m_startIndex(StartIndex), m_name(Name)
ArgumentParser(const std::wstring& CommandLine, LPCWSTR Name, int StartIndex = 1, bool ignoreUnknownArgs = false) :
m_startIndex(StartIndex), m_name(Name), m_ignoreUnknownArgs(ignoreUnknownArgs)
{
m_argv.reset(CommandLineToArgvW(std::wstring(CommandLine).c_str(), &m_argc));
THROW_LAST_ERROR_IF(!m_argv);
}

#else

ArgumentParser(int argc, const char* const* argv) : m_argc(argc), m_argv(argv), m_startIndex(1)
ArgumentParser(int argc, const char* const* argv, bool ignoreUnknownArgs = false) :
m_argc(argc), m_argv(argv), m_startIndex(1), m_ignoreUnknownArgs(ignoreUnknownArgs)
{
}

Expand Down Expand Up @@ -400,7 +402,7 @@ class ArgumentParser
const TChar* value = nullptr;
if (e.Positional)
{
value = m_argv[i]; // Positional arguments directly receive arvg[i]
value = m_argv[i]; // Positional arguments directly receive argv[i]
}
else if (i + 1 < m_argc)
{
Expand Down Expand Up @@ -429,6 +431,11 @@ class ArgumentParser

if (!foundMatch)
{
if (m_ignoreUnknownArgs)
{
break;
}

THROW_USER_ERROR(wsl::shared::Localization::MessageInvalidCommandLine(m_argv[i], m_name ? m_name : m_argv[0]));
}

Expand Down Expand Up @@ -535,6 +542,7 @@ class ArgumentParser

int m_startIndex{};
const TChar* m_name{};
bool m_ignoreUnknownArgs{false};
};
} // namespace wsl::shared

Expand Down
1 change: 1 addition & 0 deletions src/windows/common/ExecutionContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ enum Context : ULONGLONG
UpdatePackage = 0x10000000000,
QueryLatestGitHubRelease = 0x20000000000,
VerifyChecksum = 0x40000000000,
WslaDiag = 0x80000000000,
};

DEFINE_ENUM_FLAG_OPERATORS(Context)
Expand Down
3 changes: 2 additions & 1 deletion src/windows/common/wslutil.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,8 @@ static const std::map<Context, LPCWSTR> g_contextStrings{
X(HNS),
X(ReadDistroConfig),
X(MoveDistro),
X(VerifyChecksum)};
X(VerifyChecksum),
X(WslaDiag)};

#undef X

Expand Down
Loading