diff options
author | Brad King <brad.king@kitware.com> | 2009-02-05 21:31:37 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-02-05 21:31:37 (GMT) |
commit | dc13914cd698b49cbae491c1e1aebbcd44fbe932 (patch) | |
tree | 4eaa716c3e2160a7e81125360d83dc9f87241ede /Source/cmSystemTools.cxx | |
parent | f16a471576199ec275463e35ff17849350c0da79 (diff) | |
download | CMake-dc13914cd698b49cbae491c1e1aebbcd44fbe932.zip CMake-dc13914cd698b49cbae491c1e1aebbcd44fbe932.tar.gz CMake-dc13914cd698b49cbae491c1e1aebbcd44fbe932.tar.bz2 |
ENH: Create cmXMLSafe to help escapes in XML
This class provides easy syntax to efficiently insert blocks of data
into XML documents with proper escapes. It replaces the old
cmCTest::MakeXMLSafe and cmSystemTools::MakeXMLSafe methods which
allocated extra memory instead of directly streaming the data.
Diffstat (limited to 'Source/cmSystemTools.cxx')
-rw-r--r-- | Source/cmSystemTools.cxx | 50 |
1 files changed, 0 insertions, 50 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 0ef7508..84ed729 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -1644,56 +1644,6 @@ void cmSystemTools::EnableVSConsoleOutput() #endif } -std::string cmSystemTools::MakeXMLSafe(const char* str) -{ - std::vector<char> result; - result.reserve(500); - const char* pos = str; - for ( ;*pos; ++pos) - { - char ch = *pos; - if ( (ch > 126 || ch < 32) && ch != 9 && ch != 10 && ch != 13 - && ch != '\r' ) - { - char buffer[33]; - sprintf(buffer, "<%d>", static_cast<int>(ch)); - //sprintf(buffer, "&#x%0x;", (unsigned int)ch); - result.insert(result.end(), buffer, buffer+strlen(buffer)); - } - else - { - const char* const encodedChars[] = { - "&", - "<", - ">" - }; - switch ( ch ) - { - case '&': - result.insert(result.end(), encodedChars[0], encodedChars[0]+5); - break; - case '<': - result.insert(result.end(), encodedChars[1], encodedChars[1]+4); - break; - case '>': - result.insert(result.end(), encodedChars[2], encodedChars[2]+4); - break; - case '\n': - result.push_back('\n'); - break; - case '\r': break; // Ignore \r - default: - result.push_back(ch); - } - } - } - if ( result.size() == 0 ) - { - return ""; - } - return std::string(&*result.begin(), result.size()); -} - bool cmSystemTools::IsPathToFramework(const char* path) { if(cmSystemTools::FileIsFullPath(path)) |