return path_;
}
-TemporaryFile::~TemporaryFile() {
+void TemporaryFile::reset() {
if (fd_ != -1 && closeOnDestruction_) {
if (::close(fd_) == -1) {
- PLOG(ERROR) << "close failed";
+ PLOG(ERROR) << "close failed (fd = " << fd_ << "): ";
}
}
}
}
+TemporaryFile::~TemporaryFile() {
+ reset();
+}
+
TemporaryDirectory::TemporaryDirectory(
StringPiece namePrefix,
fs::path dir,
}
}
-ChangeToTempDir::ChangeToTempDir() : initialPath_(fs::current_path()) {
- std::string p = dir_.path().string();
- ::chdir(p.c_str());
+ChangeToTempDir::ChangeToTempDir() {
+ orig_ = fs::current_path();
+ fs::current_path(path());
}
ChangeToTempDir::~ChangeToTempDir() {
- std::string p = initialPath_.string();
- ::chdir(p.c_str());
+ if (!orig_.empty()) {
+ fs::current_path(orig_);
+ }
}
namespace detail {