summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorSebastien Barre <sebastien.barre@kitware.com>2005-06-13 22:03:53 (GMT)
committerSebastien Barre <sebastien.barre@kitware.com>2005-06-13 22:03:53 (GMT)
commit7f2c1e434c0e629d0d851e047df42ce9ad71d860 (patch)
treefe1d60c677156f29632e17a943ddfda0568aeb6b /Source
parent6037d1ae66f82bc650fba5ec2a53370199fac380 (diff)
downloadCMake-7f2c1e434c0e629d0d851e047df42ce9ad71d860.zip
CMake-7f2c1e434c0e629d0d851e047df42ce9ad71d860.tar.gz
CMake-7f2c1e434c0e629d0d851e047df42ce9ad71d860.tar.bz2
ENH: add method to escape some chars in a string
Diffstat (limited to 'Source')
-rw-r--r--Source/kwsys/SystemTools.cxx35
-rw-r--r--Source/kwsys/SystemTools.hxx.in6
2 files changed, 41 insertions, 0 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx
index 938a959..f5c4507 100644
--- a/Source/kwsys/SystemTools.cxx
+++ b/Source/kwsys/SystemTools.cxx
@@ -1205,6 +1205,41 @@ int SystemTools::EstimateFormatLength(const char *format, va_list ap)
return length;
}
+kwsys_stl::string SystemTools::EscapeChars(
+ const char *str,
+ const char *chars_to_escape,
+ char escape_char)
+{
+ kwsys_stl::string n;
+ if (str)
+ {
+ if (!chars_to_escape | !*chars_to_escape)
+ {
+ n.append(str);
+ }
+ else
+ {
+ n.reserve(strlen(str));
+ while (*str)
+ {
+ const char *ptr = chars_to_escape;
+ while (*ptr)
+ {
+ if (*str == *ptr)
+ {
+ n += escape_char;
+ break;
+ }
+ ++ptr;
+ }
+ n += *str;
+ ++str;
+ }
+ }
+ }
+ return n;
+}
+
// convert windows slashes to unix slashes
void SystemTools::ConvertToUnixSlashes(kwsys_stl::string& path)
{
diff --git a/Source/kwsys/SystemTools.hxx.in b/Source/kwsys/SystemTools.hxx.in
index ba57618..8f22165 100644
--- a/Source/kwsys/SystemTools.hxx.in
+++ b/Source/kwsys/SystemTools.hxx.in
@@ -220,6 +220,12 @@ public:
*/
static int EstimateFormatLength(const char *format, va_list ap);
+ /**
+ * Escape specific characters in 'str'.
+ */
+ static kwsys_stl::string EscapeChars(
+ const char *str, const char *chars_to_escape, char escape_char = '\\');
+
/** -----------------------------------------------------------------
* Filename Manipulation Routines
* -----------------------------------------------------------------