From 743eb4dd810fa2cf215fd9b8a1ebe62318580c26 Mon Sep 17 00:00:00 2001
From: Bill Hoffman <bill.hoffman@kitware.com>
Date: Fri, 5 Jun 2009 12:01:30 -0400
Subject: [PATCH] ENH: move PutEnv to SystemTools

---
 SystemTools.cxx      | 27 +++++++++++++++++++++++++++
 SystemTools.hxx.in   |  4 ++++
 kwsysDateStamp.cmake |  4 ++--
 3 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/SystemTools.cxx b/SystemTools.cxx
index 2fddfb8..0113ded 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -402,6 +402,33 @@ bool SystemTools::GetEnv(const char* key, kwsys_stl::string& result)
     }
 }
 
+class kwsysDeletingCharVector : public kwsys_stl::vector<char*>
+{
+public:
+  ~kwsysDeletingCharVector()
+    {
+      for(kwsys_stl::vector<char*>::iterator i = this->begin();
+          i != this->end(); ++i)
+        {
+        delete []*i;
+        }
+    }
+};
+
+        
+bool SystemTools::PutEnv(const char* value)
+{ 
+  static kwsysDeletingCharVector localEnvironment;
+  char* envVar = new char[strlen(value)+1];
+  strcpy(envVar, value);
+  int ret = putenv(envVar);
+  // save the pointer in the static vector so that it can
+  // be deleted on exit
+  localEnvironment.push_back(envVar);
+  return ret == 0;
+}
+
+
 const char* SystemTools::GetExecutableExtension()
 {
 #if defined(_WIN32) || defined(__CYGWIN__)
diff --git a/SystemTools.hxx.in b/SystemTools.hxx.in
index 94586b0..6fad217 100644
--- a/SystemTools.hxx.in
+++ b/SystemTools.hxx.in
@@ -754,6 +754,10 @@ public:
   static const char* GetEnv(const char* key);
   static bool GetEnv(const char* key, kwsys_stl::string& result);
 
+  /** Put a string into the environment
+      of the form var=value */
+  static bool PutEnv(const char* value);
+
   /**
    * Get current working directory CWD
    */
diff --git a/kwsysDateStamp.cmake b/kwsysDateStamp.cmake
index 6e4b57b..f2ee12d 100644
--- a/kwsysDateStamp.cmake
+++ b/kwsysDateStamp.cmake
@@ -4,7 +4,7 @@
 SET(KWSYS_DATE_STAMP_YEAR  2009)
 
 # KWSys version date month component.  Format is MM.
-SET(KWSYS_DATE_STAMP_MONTH 05)
+SET(KWSYS_DATE_STAMP_MONTH 06)
 
 # KWSys version date day component.  Format is DD.
-SET(KWSYS_DATE_STAMP_DAY   20)
+SET(KWSYS_DATE_STAMP_DAY   05)
-- 
GitLab