Theme: Add ability to disable size checking before backup
(for compressed backup users with low space). Clean up backup folder and copy only recovery.log for debugging. Conflicts: gui/devices/watch/res/watch.xml Change-Id: If8aa3580dbc082d0fe4882d4af8dc3cdb362a8b5
This commit is contained in:
@@ -101,6 +101,7 @@
|
||||
<variable name="nandcheck_row5" value="330" />
|
||||
<variable name="nandcheck_row6" value="375" />
|
||||
<variable name="nandcheck_row7" value="410" />
|
||||
<variable name="nandcheck_row8" value="445" />
|
||||
<variable name="button_text_color" value="#AAAAAA" />
|
||||
<variable name="text_color" value="#A0A0A0" />
|
||||
<variable name="text_success_color" value="#33B5E5" />
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
<variable name="nandcheck_row5" value="350" />
|
||||
<variable name="nandcheck_row6" value="400" />
|
||||
<variable name="nandcheck_row7" value="450" />
|
||||
<variable name="nandcheck_row8" value="500" />
|
||||
<variable name="button_text_color" value="#AAAAAA" />
|
||||
<variable name="text_color" value="#A0A0A0" />
|
||||
<variable name="text_success_color" value="#33B5E5" />
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
<variable name="nandcheck_row5" value="350" />
|
||||
<variable name="nandcheck_row6" value="400" />
|
||||
<variable name="nandcheck_row7" value="450" />
|
||||
<variable name="nandcheck_row8" value="500" />
|
||||
<variable name="button_text_color" value="#AAAAAA" />
|
||||
<variable name="text_color" value="#A0A0A0" />
|
||||
<variable name="text_success_color" value="#33B5E5" />
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
<variable name="nandcheck_row5" value="500" />
|
||||
<variable name="nandcheck_row6" value="575" />
|
||||
<variable name="nandcheck_row7" value="650" />
|
||||
<variable name="nandcheck_row8" value="725" />
|
||||
<variable name="button_text_color" value="#AAAAAA" />
|
||||
<variable name="text_color" value="#A0A0A0" />
|
||||
<variable name="text_success_color" value="#33B5E5" />
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
<variable name="nandcheck_row5" value="660" />
|
||||
<variable name="nandcheck_row6" value="760" />
|
||||
<variable name="nandcheck_row7" value="860" />
|
||||
<variable name="nandcheck_row8" value="960" />
|
||||
<variable name="button_text_color" value="#AAAAAA" />
|
||||
<variable name="text_color" value="#A0A0A0" />
|
||||
<variable name="text_success_color" value="#33B5E5" />
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 3.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 2.5 KiB |
@@ -94,8 +94,8 @@
|
||||
<variable name="row5_medium_y" value="258" />
|
||||
<variable name="row6_medium_y" value="303" />
|
||||
<variable name="row7_medium_y" value="348" />
|
||||
<variable name="slider_x" value="39" />
|
||||
<variable name="slider_y" value="400" />
|
||||
<variable name="slider_x" value="55" />
|
||||
<variable name="slider_y" value="410" />
|
||||
<variable name="slider_text_y" value="425" />
|
||||
<variable name="button_text_color" value="#AAAAAA" />
|
||||
<variable name="text_color" value="#FFFFFF" />
|
||||
|
||||
@@ -101,6 +101,7 @@
|
||||
<variable name="nandcheck_row5" value="250" />
|
||||
<variable name="nandcheck_row6" value="280" />
|
||||
<variable name="nandcheck_row7" value="310" />
|
||||
<variable name="nandcheck_row8" value="340" />
|
||||
<variable name="button_text_color" value="#AAAAAA" />
|
||||
<variable name="text_color" value="#A0A0A0" />
|
||||
<variable name="text_success_color" value="#33B5E5" />
|
||||
|
||||
@@ -1623,6 +1623,14 @@
|
||||
<data variable="tw_skip_md5_generate" />
|
||||
</object>
|
||||
|
||||
<object type="checkbox">
|
||||
<placement x="%col3_x%" y="%nandcheck_row8%" />
|
||||
<font resource="font" color="%text_color%" />
|
||||
<text>Disable Free Space Check.</text>
|
||||
<data variable="tw_disable_free_space" />
|
||||
<image checked="checkbox_true" unchecked="checkbox_false" />
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<text>Swipe to Back Up</text>
|
||||
<actions>
|
||||
|
||||
@@ -1402,6 +1402,14 @@
|
||||
<data variable="tw_skip_md5_generate" />
|
||||
</object>
|
||||
|
||||
<object type="checkbox">
|
||||
<placement x="%col1_x%" y="%row17_text_y%" />
|
||||
<font resource="font" color="%text_color%" />
|
||||
<text>Disable Free Space Check.</text>
|
||||
<data variable="tw_disable_free_space" />
|
||||
<image checked="checkbox_true" unchecked="checkbox_false" />
|
||||
</object>
|
||||
|
||||
<object type="slider">
|
||||
<text>Swipe to Back Up</text>
|
||||
<action function="page">backup_run</action>
|
||||
|
||||
@@ -1415,11 +1415,19 @@
|
||||
</object>
|
||||
|
||||
<object type="checkbox">
|
||||
<placement x="%col1_x%" y="%row4_text_y%" />
|
||||
<placement x="%col1_x%" y="%row3_text_y%" />
|
||||
<text>Skip MD5 generation during backup.</text>
|
||||
<data variable="tw_skip_md5_generate" />
|
||||
</object>
|
||||
|
||||
<object type="checkbox">
|
||||
<placement x="%col1_x%" y="%row4_text_y%" />
|
||||
<font resource="font" color="%text_color%" />
|
||||
<text>Disable Free Space Check.</text>
|
||||
<data variable="tw_disable_free_space" />
|
||||
<image checked="checkbox_true" unchecked="checkbox_false" />
|
||||
</object>
|
||||
|
||||
<object type="action">
|
||||
<touch key="home" />
|
||||
<action function="page">main</action>
|
||||
|
||||
+46
-5
@@ -526,6 +526,8 @@ bool TWPartitionManager::Backup_Partition(TWPartition* Part, string Backup_Folde
|
||||
float pos;
|
||||
unsigned long long total_size, current_size;
|
||||
|
||||
string backup_log = Backup_Folder + "recovery.log";
|
||||
|
||||
if (Part == NULL)
|
||||
return true;
|
||||
|
||||
@@ -574,6 +576,9 @@ bool TWPartitionManager::Backup_Partition(TWPartition* Part, string Backup_Folde
|
||||
if ((*subpart)->Can_Be_Backed_Up && (*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == Part->Mount_Point) {
|
||||
if (!(*subpart)->Backup(Backup_Folder, &total_size, ¤t_size, tar_fork_pid)) {
|
||||
TWFunc::SetPerformanceMode(false);
|
||||
Clean_Backup_Folder(Backup_Folder);
|
||||
TWFunc::copy_file("/tmp/recovery.log", backup_log, 0644);
|
||||
tw_set_default_metadata(backup_log.c_str());
|
||||
return false;
|
||||
}
|
||||
sync();
|
||||
@@ -608,12 +613,44 @@ bool TWPartitionManager::Backup_Partition(TWPartition* Part, string Backup_Folde
|
||||
TWFunc::SetPerformanceMode(false);
|
||||
return md5Success;
|
||||
} else {
|
||||
Clean_Backup_Folder(Backup_Folder);
|
||||
TWFunc::copy_file("/tmp/recovery.log", backup_log, 0644);
|
||||
tw_set_default_metadata(backup_log.c_str());
|
||||
TWFunc::SetPerformanceMode(false);
|
||||
return false;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void TWPartitionManager::Clean_Backup_Folder(string Backup_Folder) {
|
||||
DIR *d = opendir(Backup_Folder.c_str());
|
||||
struct dirent *p;
|
||||
int r;
|
||||
|
||||
gui_print("Backup Failed.\nCleaning Backup Folder\n");
|
||||
|
||||
if (d == NULL) {
|
||||
LOGERR("Error opening dir: '%s'\n", Backup_Folder.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
while (p = readdir(d)) {
|
||||
if (!strcmp(p->d_name, ".") || !strcmp(p->d_name, ".."))
|
||||
continue;
|
||||
|
||||
string path = Backup_Folder + p->d_name;
|
||||
|
||||
size_t dot = path.find_last_of(".") + 1;
|
||||
if (path.substr(dot) == "win" || path.substr(dot) == "md5" || path.substr(dot) == "info") {
|
||||
r = unlink(path.c_str());
|
||||
if (r != 0) {
|
||||
LOGINFO("Unable to unlink '%s: %s'\n", path.c_str(), strerror(errno));
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir(d);
|
||||
}
|
||||
|
||||
int TWPartitionManager::Cancel_Backup() {
|
||||
string Backup_Folder, Backup_Name, Full_Backup_Path;
|
||||
|
||||
@@ -638,7 +675,7 @@ int TWPartitionManager::Cancel_Backup() {
|
||||
}
|
||||
|
||||
int TWPartitionManager::Run_Backup(void) {
|
||||
int check, do_md5, partition_count = 0;
|
||||
int check, do_md5, partition_count, disable_free_space_check = 0;
|
||||
string Backup_Folder, Backup_Name, Full_Backup_Path, Backup_List, backup_path;
|
||||
unsigned long long total_bytes = 0, file_bytes = 0, img_bytes = 0, free_space = 0, img_bytes_remaining, file_bytes_remaining, subpart_size;
|
||||
unsigned long img_time = 0, file_time = 0;
|
||||
@@ -726,10 +763,14 @@ int TWPartitionManager::Run_Backup(void) {
|
||||
LOGERR("Unable to locate storage device.\n");
|
||||
return false;
|
||||
}
|
||||
if (free_space - (32 * 1024 * 1024) < total_bytes) {
|
||||
// We require an extra 32MB just in case
|
||||
LOGERR("Not enough free space on storage.\n");
|
||||
return false;
|
||||
|
||||
DataManager::GetValue("tw_disable_free_space", disable_free_space_check);
|
||||
if (!disable_free_space_check) {
|
||||
if (free_space - (32 * 1024 * 1024) < total_bytes) {
|
||||
// We require an extra 32MB just in case
|
||||
LOGERR("Not enough free space on storage.\n");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
img_bytes_remaining = img_bytes;
|
||||
file_bytes_remaining = file_bytes;
|
||||
|
||||
+1
-1
@@ -213,7 +213,7 @@ public:
|
||||
int Partition_SDCard(void); // Repartitions the sdcard
|
||||
TWPartition *Get_Default_Storage_Partition(); // Returns a pointer to a default storage partition
|
||||
int Cancel_Backup(); // Signals partition backup to cancel
|
||||
|
||||
void Clean_Backup_Folder(string Backup_Folder); // Clean Backup Folder on Error
|
||||
int Fix_Permissions();
|
||||
void Get_Partition_List(string ListType, std::vector<PartitionList> *Partition_List);
|
||||
int Fstab_Processed(); // Indicates if the fstab has been processed or not
|
||||
|
||||
Reference in New Issue
Block a user