base: TemporaryDir add DoNotRemove() method

Recursively delete all contents in a temporary directory in the
destructor.  If the caller wants the contents preserved, then
call DoNotRemove().

Test: compile
Bug: 119313545
Change-Id: I3601c06334920055a60dd3074b249824f4d6f510
This commit is contained in:
Mark Salyzyn 2018-11-13 13:38:33 -08:00
parent 46c2df5812
commit d2f5888894
2 changed files with 6 additions and 0 deletions

View File

@ -134,6 +134,8 @@ TemporaryDir::TemporaryDir() {
}
TemporaryDir::~TemporaryDir() {
if (!remove_dir_and_contents_) return;
auto callback = [](const char* child, const struct stat*, int file_type, struct FTW*) -> int {
switch (file_type) {
case FTW_D:

View File

@ -61,12 +61,16 @@ class TemporaryDir {
public:
TemporaryDir();
~TemporaryDir();
// Don't remove the temporary dir in the destructor.
void DoNotRemove() { remove_dir_and_contents_ = false; }
char path[1024];
private:
bool init(const std::string& tmp_dir);
bool remove_dir_and_contents_ = true;
DISALLOW_COPY_AND_ASSIGN(TemporaryDir);
};