From 6d90ac6629900e0c9d01c6ba860c5510b90ca845 Mon Sep 17 00:00:00 2001
From: Sebastien Barre <sebastien.barre@kitware.com>
Date: Fri, 11 Mar 2005 11:48:39 -0500
Subject: [PATCH] ENH: add last two small funcs from vtkString. Done removing
 deps

---
 SystemTools.cxx    | 49 ++++++++++++++++++++++++++++++++++++++++++++++
 SystemTools.hxx.in | 11 +++++++++++
 2 files changed, 60 insertions(+)

diff --git a/SystemTools.cxx b/SystemTools.cxx
index 61d08a18..5c97fe33 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -841,6 +841,55 @@ kwsys_stl::string SystemTools::AddSpaceBetweenCapitalizedWords(
   return n;
 }
 
+char* SystemTools::AppendStrings(const char* str1, const char* str2)
+{
+  if (!str1)
+    {
+    return SystemTools::DuplicateString(str2);
+    }
+  if (!str2)
+    {
+    return SystemTools::DuplicateString(str1);
+    }
+  size_t len1 = strlen(str1);
+  char *newstr = new char[len1 + strlen(str2) + 1];
+  if (!newstr)
+    {
+    return 0;
+    }
+  strcpy(newstr, str1);
+  strcat(newstr + len1, str2);
+  return newstr;
+}
+
+char* SystemTools::AppendStrings(
+  const char* str1, const char* str2, const char* str3)
+{
+  if (!str1)
+    {
+    return SystemTools::AppendStrings(str2, str3);
+    }
+  if (!str2)
+    {
+    return SystemTools::AppendStrings(str1, str3);
+    }
+  if (!str3)
+    {
+    return SystemTools::AppendStrings(str1, str2);
+    }
+
+  size_t len1 = strlen(str1), len2 = strlen(str2);
+  char *newstr = new char[len1 + len2 + strlen(str3) + 1];
+  if (!newstr)
+    {
+    return 0;
+    }
+  strcpy(newstr, str1);
+  strcat(newstr + len1, str2);
+  strcat(newstr + len1 + len2, str3);
+  return newstr;
+}
+
 // Return a lower case string 
 kwsys_stl::string SystemTools::LowerCase(const kwsys_stl::string& s)
 {
diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in
index c0cac7df..4707518a 100644
--- a/SystemTools.hxx.in
+++ b/SystemTools.hxx.in
@@ -177,6 +177,17 @@ public:
   static kwsys_stl::string AddSpaceBetweenCapitalizedWords(
     const kwsys_stl::string&);
 
+  /** 
+   * Append two or more strings and produce new one.
+   * Programmer must 'delete []' the resulting string, which was allocated 
+   * with 'new'. 
+   * Return 0 if inputs are empty or there was an error
+   */
+  static char* AppendStrings(
+    const char* str1, const char* str2);
+  static char* AppendStrings(
+    const char* str1, const char* str2, const char* str3);
+
   /** -----------------------------------------------------------------
    *               Filename Manipulation Routines
    *  -----------------------------------------------------------------
-- 
GitLab