summaryrefslogtreecommitdiffstats
path: root/Source/kwsys/SystemTools.cxx
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2009-06-05 16:01:30 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2009-06-05 16:01:30 (GMT)
commitfdff8eb300872af8546b738c0ffc4ac704d5feac (patch)
treeed5c6e5e82c0ecc75d19ef2b2ba86657537eaa51 /Source/kwsys/SystemTools.cxx
parentd5f80203918c7428c90735c43bce7ed2865bda83 (diff)
downloadCMake-fdff8eb300872af8546b738c0ffc4ac704d5feac.zip
CMake-fdff8eb300872af8546b738c0ffc4ac704d5feac.tar.gz
CMake-fdff8eb300872af8546b738c0ffc4ac704d5feac.tar.bz2
ENH: move PutEnv to SystemTools
Diffstat (limited to 'Source/kwsys/SystemTools.cxx')
-rw-r--r--Source/kwsys/SystemTools.cxx27
1 files changed, 27 insertions, 0 deletions
diff --git a/Source/kwsys/SystemTools.cxx b/Source/kwsys/SystemTools.cxx
index 2d90de2..45c4969 100644
--- a/Source/kwsys/SystemTools.cxx
+++ b/Source/kwsys/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__)