summaryrefslogtreecommitdiffstats
path: root/Source/cmWorkingDirectory.cxx
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2017-03-01 18:40:22 (GMT)
committerBrad King <brad.king@kitware.com>2017-03-06 15:38:20 (GMT)
commit047a5e4d6656f362151b855b34c259708b8419ba (patch)
tree46f04ad99217759e0fcc95e7cc3ab9c109d5d57c /Source/cmWorkingDirectory.cxx
parent89891bcb9e226cc6216227634d0272adbc080c72 (diff)
downloadCMake-047a5e4d6656f362151b855b34c259708b8419ba.zip
CMake-047a5e4d6656f362151b855b34c259708b8419ba.tar.gz
CMake-047a5e4d6656f362151b855b34c259708b8419ba.tar.bz2
cmWorkingDirectory: add class for changing the workdir
Diffstat (limited to 'Source/cmWorkingDirectory.cxx')
-rw-r--r--Source/cmWorkingDirectory.cxx24
1 files changed, 24 insertions, 0 deletions
diff --git a/Source/cmWorkingDirectory.cxx b/Source/cmWorkingDirectory.cxx
new file mode 100644
index 0000000..99c9ba8
--- /dev/null
+++ b/Source/cmWorkingDirectory.cxx
@@ -0,0 +1,24 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
+#include "cmWorkingDirectory.h"
+
+#include "cmSystemTools.h"
+
+cmWorkingDirectory::cmWorkingDirectory(std::string const& newdir)
+{
+ this->OldDir = cmSystemTools::GetCurrentWorkingDirectory();
+ cmSystemTools::ChangeDirectory(newdir);
+}
+
+cmWorkingDirectory::~cmWorkingDirectory()
+{
+ this->Pop();
+}
+
+void cmWorkingDirectory::Pop()
+{
+ if (!this->OldDir.empty()) {
+ cmSystemTools::ChangeDirectory(this->OldDir);
+ this->OldDir.clear();
+ }
+}