/* 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 #include "cmSystemTools.h" cmWorkingDirectory::cmWorkingDirectory(std::string const& newdir) { this->OldDir = cmSystemTools::GetCurrentWorkingDirectory(); this->SetDirectory(newdir); } cmWorkingDirectory::~cmWorkingDirectory() { this->Pop(); } bool cmWorkingDirectory::SetDirectory(std::string const& newdir) { if (cmSystemTools::ChangeDirectory(newdir)) { this->ResultCode = 0; return true; } this->ResultCode = errno; return false; } void cmWorkingDirectory::Pop() { if (!this->OldDir.empty()) { this->SetDirectory(this->OldDir); this->OldDir.clear(); } }