BUG: apply patch from #8205, also fixes #8212: escape characters for XML

when writing the eclipse project files

Alex
This commit is contained in:
Alexander Neundorf 2009-01-08 18:09:50 -05:00
parent ef3e48c3d5
commit cf0ab29fcb
2 changed files with 17 additions and 1 deletions

View File

@ -573,7 +573,8 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
{
emmited.insert(def);
fout << "<pathentry kind=\"mac\" name=\"" << def
<< "\" path=\"\" value=\"" << val << "\"/>\n";
<< "\" path=\"\" value=\"" << this->EscapeForXML(val)
<< "\"/>\n";
}
}
}
@ -792,6 +793,19 @@ cmExtraEclipseCDT4Generator::GenerateProjectName(const std::string& name,
return name + (type.empty() ? "" : "-") + type + "@" + path;
}
std::string cmExtraEclipseCDT4Generator::EscapeForXML(const std::string& value)
{
std::string str = value;
cmSystemTools::ReplaceString(str, "&", "&amp;");
cmSystemTools::ReplaceString(str, "<", "&lt;");
cmSystemTools::ReplaceString(str, ">", "&gt;");
cmSystemTools::ReplaceString(str, "\"", "&quot;");
// NOTE: This one is not necessary, since as of Eclipse CDT4 it will
// automatically change this to the original value (').
//cmSystemTools::ReplaceString(str, "'", "&apos;");
return str;
}
//----------------------------------------------------------------------------
// Helper functions
//----------------------------------------------------------------------------

View File

@ -84,6 +84,8 @@ private:
const std::string& type,
const std::string& path);
static std::string EscapeForXML(const std::string& value);
// Helper functions
static void AppendStorageScanners(cmGeneratedFileStream& fout);
static void AppendTarget (cmGeneratedFileStream& fout,