Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions include/vcpkg/base/parse.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ namespace vcpkg::Parse
static constexpr bool is_alphanum(char32_t ch) { return is_icase_alpha(ch) || is_ascii_digit(ch); }
static constexpr bool is_alphadash(char32_t ch) { return is_icase_alpha(ch) || ch == '-'; }
static constexpr bool is_alphanumdash(char32_t ch) { return is_alphanum(ch) || ch == '-'; }
static constexpr bool is_package_name_char(char32_t ch)
{
return is_lower_alpha(ch) || is_ascii_digit(ch) || ch == '-';
}

static constexpr bool is_hex_digit(char32_t ch)
{
Expand Down
19 changes: 3 additions & 16 deletions src/vcpkg/packagespec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,19 +99,6 @@ namespace vcpkg
return PackageSpec{name, t};
}

static bool is_package_name_char(char32_t ch)
{
return Parse::ParserBase::is_lower_alpha(ch) || Parse::ParserBase::is_ascii_digit(ch) || ch == '-';
}

static bool is_feature_name_char(char32_t ch)
{
// TODO: we do not intend underscores to be valid, however there is currently a feature using them
// (libwebp[vwebp_sdl]).
// TODO: we need to rename this feature, then remove underscores from this list.
return is_package_name_char(ch) || ch == '_';
}

ExpectedS<ParsedQualifiedSpecifier> parse_qualified_specifier(StringView input)
{
auto parser = Parse::ParserBase(input, "<unknown>");
Expand All @@ -124,7 +111,7 @@ namespace vcpkg
Optional<std::string> parse_feature_name(Parse::ParserBase& parser)
{
using Parse::ParserBase;
auto ret = parser.match_zero_or_more(is_feature_name_char).to_string();
auto ret = parser.match_zero_or_more(ParserBase::is_package_name_char).to_string();
auto ch = parser.cur();

// ignores the feature name vwebp_sdl as a back-compat thing
Expand All @@ -151,7 +138,7 @@ namespace vcpkg
Optional<std::string> parse_package_name(Parse::ParserBase& parser)
{
using Parse::ParserBase;
auto ret = parser.match_zero_or_more(is_package_name_char).to_string();
auto ret = parser.match_zero_or_more(ParserBase::is_package_name_char).to_string();
auto ch = parser.cur();
if (ParserBase::is_upper_alpha(ch) || ch == '_')
{
Expand Down Expand Up @@ -221,7 +208,7 @@ namespace vcpkg
if (ch == ':')
{
parser.next();
ret.triplet = parser.match_zero_or_more(is_package_name_char).to_string();
ret.triplet = parser.match_zero_or_more(ParserBase::is_package_name_char).to_string();
if (ret.triplet.get()->empty())
{
parser.add_error("expected triplet name (must be lowercase, digits, '-')");
Expand Down