/* 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 "cmStringAlgorithms.h" #include "cmSystemTools.h" cmWorkingDirectory::cmWorkingDirectory(std::string const& newdir) { this->OldDir = cmSystemTools::GetLogicalWorkingDirectory(); this->SetDirectory(newdir); } cmWorkingDirectory::~cmWorkingDirectory() { this->Pop(); } bool cmWorkingDirectory::SetDirectory(std::string const& newdir) { cmsys::Status status = cmSystemTools::SetLogicalWorkingDirectory(newdir); if (status) { this->Error.clear(); return true; } this->Error = cmStrCat("Failed to change working directory to \"", newdir, "\": ", status.GetString()); return false; } void cmWorkingDirectory::Pop() { if (!this->OldDir.empty()) { this->SetDirectory(this->OldDir); this->OldDir.clear(); } }