resolve cyclic dependency with zstd
[platform/upstream/cmake.git] / Source / cmWorkingDirectory.cxx
1 /* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2    file Copyright.txt or https://cmake.org/licensing for details.  */
3 #include "cmWorkingDirectory.h"
4
5 #include <cerrno>
6
7 #include "cmSystemTools.h"
8
9 cmWorkingDirectory::cmWorkingDirectory(std::string const& newdir)
10 {
11   this->OldDir = cmSystemTools::GetCurrentWorkingDirectory();
12   this->SetDirectory(newdir);
13 }
14
15 cmWorkingDirectory::~cmWorkingDirectory()
16 {
17   this->Pop();
18 }
19
20 bool cmWorkingDirectory::SetDirectory(std::string const& newdir)
21 {
22   if (cmSystemTools::ChangeDirectory(newdir)) {
23     this->ResultCode = 0;
24     return true;
25   }
26   this->ResultCode = errno;
27   return false;
28 }
29
30 void cmWorkingDirectory::Pop()
31 {
32   if (!this->OldDir.empty()) {
33     this->SetDirectory(this->OldDir);
34     this->OldDir.clear();
35   }
36 }