Clear the relative directory before passing on to twrpTar with the static du object. Otherwise we will not backup /system/media etc
Change-Id: Ib62af6ad8596aa18bf48cb750e2ecf442dadc627
diff --git a/partition.cpp b/partition.cpp
index 13f0db7..aeef04e 100644
--- a/partition.cpp
+++ b/partition.cpp
@@ -399,7 +399,6 @@
} else if (Mount_Point == "/recovery") {
Display_Name = "Recovery";
Backup_Display_Name = Display_Name;
- Can_Be_Backed_Up = true;
}
}
@@ -1539,8 +1538,9 @@
// The media folder is the "internal sdcard"
// The .layout_version file is responsible for determining whether 4.2 decides up upgrade
// the media folder for multi-user.
+ //TODO: convert this to use twrpDU.cpp
if (strcmp(de->d_name, "media") == 0 || strcmp(de->d_name, ".layout_version") == 0) continue;
-
+
dir = "/data/";
dir.append(de->d_name);
if (de->d_type == DT_DIR) {
@@ -1551,6 +1551,7 @@
}
}
closedir(d);
+
gui_print("Done.\n");
return true;
}
@@ -1798,6 +1799,7 @@
unsigned long long data_media_used, actual_data;
du.add_relative_dir("media");
Used = du.Get_Folder_Size("/data");
+ du.clear_relative_dir("media");
Backup_Size = Used;
int bak = (int)(Used / 1048576LLU);
int fre = (int)(Free / 1048576LLU);
diff --git a/twrpDU.cpp b/twrpDU.cpp
index 66c8031..c4446d4 100644
--- a/twrpDU.cpp
+++ b/twrpDU.cpp
@@ -43,6 +43,16 @@
relativedir.push_back(dir);
}
+void twrpDU::clear_relative_dir(string dir) {
+ vector<string>::iterator iter = relativedir.begin();
+ while (iter != relativedir.end()) {
+ if (*iter == dir)
+ iter = relativedir.erase(iter);
+ else
+ iter++;
+ }
+}
+
void twrpDU::add_absolute_dir(string dir) {
absolutedir.push_back(dir);
}
@@ -97,7 +107,6 @@
}
}
for (int i = 0; i < absolutedir.size(); ++i) {
- //string absdir = parent + dir;
if (dir == absolutedir.at(i)) {
result = true;
break;
diff --git a/twrpDU.hpp b/twrpDU.hpp
index 04527cd..dac15f1 100644
--- a/twrpDU.hpp
+++ b/twrpDU.hpp
@@ -40,8 +40,9 @@
uint64_t Get_Folder_Size(const string& Path); // Gets the folder's size using stat
void add_absolute_dir(string Path);
void add_relative_dir(string Path);
- bool check_skip_dirs(string& dir); // Checks a list of directories to see if we should skip it
+ bool check_skip_dirs(string& dir);
vector<string> get_absolute_dirs(void);
+ void clear_relative_dir(string dir);
private:
vector<string> absolutedir;
vector<string> relativedir;