diff --git a/SystemTools.cxx b/SystemTools.cxx
index 2fddfb822c6f38bab17ae67e442e0460677ed880..0113dedba756fd797301e85acc0e6219bbeefd6e 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 94586b0fe41f6a3af7bda7d408051a0e609cd1fd..6fad21721b55672c0f93c81324f860c88ea48d5c 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 6e4b57b86a2cc60e8d7018118f77421cb48e6f05..f2ee12d80c31c50380fb4c3429d7758900a59a12 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)