diff options
author | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <[email protected]> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /util/folder/tempdir.cpp |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'util/folder/tempdir.cpp')
-rw-r--r-- | util/folder/tempdir.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/util/folder/tempdir.cpp b/util/folder/tempdir.cpp new file mode 100644 index 00000000000..6fdf8f753c1 --- /dev/null +++ b/util/folder/tempdir.cpp @@ -0,0 +1,44 @@ +#include "tempdir.h" + +#include "dirut.h" + +#include <util/system/fs.h> +#include <util/system/maxlen.h> + +TTempDir::TTempDir() + : TTempDir(nullptr, TCreationToken{}) +{ +} + +TTempDir::TTempDir(const char* prefix, TCreationToken) + : TempDir() + , Remove(true) +{ + char tempDir[MAX_PATH]; + if (MakeTempDir(tempDir, prefix) != 0) { + ythrow TSystemError() << "Can't create temporary directory"; + } + TempDir = tempDir; +} + +TTempDir::TTempDir(const TString& tempDir) + : TempDir(tempDir) + , Remove(true) +{ + NFs::Remove(TempDir); + MakeDirIfNotExist(TempDir.c_str()); +} + +TTempDir TTempDir::NewTempDir(const TString& root) { + return {root.c_str(), TCreationToken{}}; +} + +void TTempDir::DoNotRemove() { + Remove = false; +} + +TTempDir::~TTempDir() { + if (Remove) { + RemoveDirWithContents(TempDir); + } +} |