Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2f58888 authored by Mark Salyzyn's avatar Mark Salyzyn
Browse files

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
parent 46c2df58
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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:
+4 −0
Original line number Diff line number Diff line
@@ -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);
};