From 4d2b58180b3005c1c5a87657f9ddec6c4b4408a6 Mon Sep 17 00:00:00 2001
From: Sebastien Barre <sebastien.barre@kitware.com>
Date: Mon, 13 Jun 2005 18:03:53 -0400
Subject: [PATCH] ENH: add method to escape some chars in a string

---
 SystemTools.cxx    | 35 +++++++++++++++++++++++++++++++++++
 SystemTools.hxx.in |  6 ++++++
 2 files changed, 41 insertions(+)

diff --git a/SystemTools.cxx b/SystemTools.cxx
index 11bbf2d..2de0ba2 100644
--- a/SystemTools.cxx
+++ b/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/SystemTools.hxx.in b/SystemTools.hxx.in
index e6af702..d7d9322 100644
--- a/SystemTools.hxx.in
+++ b/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
    *  -----------------------------------------------------------------
-- 
GitLab