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