Merge topic 'FixBadXMLInEclipseProjects'

79e13af Add XML escaping for directory name in Eclipse projects (#11658)
8074bca Fix XML escaping for target names in Eclipse project files (#11658)
cb94587 Fix XML escaping for the project() name in Eclipse projects (#11658)
This commit is contained in:
Brad King 2011-02-22 14:32:27 -05:00 committed by CMake Topic Stage
commit 7dcf2269ec
1 changed files with 12 additions and 7 deletions

View File

@ -431,7 +431,8 @@ void cmExtraEclipseCDT4Generator::AppendIncludeDirectories(
{ {
emittedDirs.insert(dir); emittedDirs.insert(dir);
fout << "<pathentry include=\"" fout << "<pathentry include=\""
<< cmExtraEclipseCDT4Generator::GetEclipsePath(dir) << cmExtraEclipseCDT4Generator::EscapeForXML(
cmExtraEclipseCDT4Generator::GetEclipsePath(dir))
<< "\" kind=\"inc\" path=\"\" system=\"true\"/>\n"; << "\" kind=\"inc\" path=\"\" system=\"true\"/>\n";
} }
} }
@ -875,8 +876,9 @@ void cmExtraEclipseCDT4Generator::CreateCProjectFile() const
fout << "</cconfiguration>\n" fout << "</cconfiguration>\n"
"</storageModule>\n" "</storageModule>\n"
"<storageModule moduleId=\"cdtBuildSystem\" version=\"4.0.0\">\n" "<storageModule moduleId=\"cdtBuildSystem\" version=\"4.0.0\">\n"
"<project id=\"" << mf->GetProjectName() << ".null.1\"" "<project id=\"" << this->EscapeForXML(mf->GetProjectName())
" name=\"" << mf->GetProjectName() << "\"/>\n" << ".null.1\" name=\"" << this->EscapeForXML(mf->GetProjectName())
<< "\"/>\n"
"</storageModule>\n" "</storageModule>\n"
"</cproject>\n" "</cproject>\n"
; ;
@ -927,7 +929,8 @@ cmExtraEclipseCDT4Generator::GenerateProjectName(const std::string& name,
const std::string& type, const std::string& type,
const std::string& path) const std::string& path)
{ {
return name + (type.empty() ? "" : "-") + type + "@" + path; return cmExtraEclipseCDT4Generator::EscapeForXML(name)
+(type.empty() ? "" : "-") + type + "@" + path;
} }
std::string cmExtraEclipseCDT4Generator::EscapeForXML(const std::string& value) std::string cmExtraEclipseCDT4Generator::EscapeForXML(const std::string& value)
@ -999,15 +1002,17 @@ void cmExtraEclipseCDT4Generator::AppendTarget(cmGeneratedFileStream& fout,
const std::string& path, const std::string& path,
const char* prefix) const char* prefix)
{ {
std::string targetXml = cmExtraEclipseCDT4Generator::EscapeForXML(target);
std::string pathXml = cmExtraEclipseCDT4Generator::EscapeForXML(path);
fout << fout <<
"<target name=\"" << prefix << target << "\"" "<target name=\"" << prefix << targetXml << "\""
" path=\"" << path.c_str() << "\"" " path=\"" << pathXml.c_str() << "\""
" targetID=\"org.eclipse.cdt.make.MakeTargetBuilder\">\n" " targetID=\"org.eclipse.cdt.make.MakeTargetBuilder\">\n"
"<buildCommand>" "<buildCommand>"
<< cmExtraEclipseCDT4Generator::GetEclipsePath(make) << cmExtraEclipseCDT4Generator::GetEclipsePath(make)
<< "</buildCommand>\n" << "</buildCommand>\n"
"<buildArguments>" << makeArgs << "</buildArguments>\n" "<buildArguments>" << makeArgs << "</buildArguments>\n"
"<buildTarget>" << target << "</buildTarget>\n" "<buildTarget>" << targetXml << "</buildTarget>\n"
"<stopOnError>true</stopOnError>\n" "<stopOnError>true</stopOnError>\n"
"<useDefaultCommand>false</useDefaultCommand>\n" "<useDefaultCommand>false</useDefaultCommand>\n"
"</target>\n" "</target>\n"