aboutsummaryrefslogtreecommitdiff
path: root/toolsrc/src/commands_export_ifw.cpp
diff options
context:
space:
mode:
authorKonstantin Podsvirov <konstantin@podsvirov.pro>2017-10-13 05:33:32 +0300
committerKonstantin Podsvirov <konstantin@podsvirov.pro>2017-10-13 05:33:32 +0300
commit37fba399ef5c57573a1218206cb2c55f5f6bc13c (patch)
tree796534fec4f3fef31d42cbb61f73a8473a96c6cd /toolsrc/src/commands_export_ifw.cpp
parent9e19c24d2911ff1ef648aeed0c596e3987eafebf (diff)
downloadvcpkg-37fba399ef5c57573a1218206cb2c55f5f6bc13c.tar.gz
vcpkg-37fba399ef5c57573a1218206cb2c55f5f6bc13c.zip
[vcpkg-export-ifw] Safe description
QtIFW support rich text for component description, bu some port has not safe ampersand symbol in description text (for example 'openexr' package), that should be replaced to '&amp;' symbol name
Diffstat (limited to 'toolsrc/src/commands_export_ifw.cpp')
-rw-r--r--toolsrc/src/commands_export_ifw.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/toolsrc/src/commands_export_ifw.cpp b/toolsrc/src/commands_export_ifw.cpp
index 191dbb763..c001a93ed 100644
--- a/toolsrc/src/commands_export_ifw.cpp
+++ b/toolsrc/src/commands_export_ifw.cpp
@@ -26,6 +26,14 @@ namespace vcpkg::Commands::Export::IFW
return date_time_as_string;
}
+ std::string safe_rich_from_plain_text(const std::string& text)
+ {
+ // match standalone ampersand, no HTML number or name
+ std::regex standalone_ampersand(R"###(&(?!(#[0-9]+|\w+);))###");
+
+ return std::regex_replace(text, standalone_ampersand, "&amp;");
+ }
+
fs::path get_packages_dir_path(const std::string& export_id, const Options& ifw_options, const VcpkgPaths& paths)
{
return ifw_options.maybe_packages_dir_path.has_value()
@@ -156,7 +164,7 @@ namespace vcpkg::Commands::Export::IFW
</Package>
)###",
action.spec.name(),
- binary_paragraph.description,
+ safe_rich_from_plain_text(binary_paragraph.description),
binary_paragraph.version,
create_release_date()));
}