From bf1d67245ebce9d63e1167920e5dec6728843b11 Mon Sep 17 00:00:00 2001 From: bigbiff Date: Sat, 14 Feb 2015 16:25:59 -0500 Subject: [PATCH] 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 --- gui/devices/1024x600/res/ui.xml | 1 + gui/devices/1024x768/res/ui.xml | 1 + gui/devices/1280x800/res/ui.xml | 1 + gui/devices/1920x1200/res/ui.xml | 1 + gui/devices/2560x1600/res/ui.xml | 1 + .../320x480/res/images/slider-touch.png | Bin 4445 -> 3781 bytes .../320x480/res/images/slider-used.png | Bin 1943 -> 1728 bytes gui/devices/320x480/res/images/slider.png | Bin 3028 -> 2611 bytes gui/devices/320x480/res/ui.xml | 4 +- gui/devices/800x480/res/ui.xml | 1 + gui/devices/landscape/res/landscape.xml | 8 +++ gui/devices/portrait/res/portrait.xml | 8 +++ gui/devices/watch/res/watch.xml | 10 +++- partitionmanager.cpp | 51 ++++++++++++++++-- partitions.hpp | 2 +- 15 files changed, 80 insertions(+), 9 deletions(-) diff --git a/gui/devices/1024x600/res/ui.xml b/gui/devices/1024x600/res/ui.xml index e76cc950..725e11fc 100644 --- a/gui/devices/1024x600/res/ui.xml +++ b/gui/devices/1024x600/res/ui.xml @@ -101,6 +101,7 @@ + diff --git a/gui/devices/1024x768/res/ui.xml b/gui/devices/1024x768/res/ui.xml index cfaf48e0..683be26f 100644 --- a/gui/devices/1024x768/res/ui.xml +++ b/gui/devices/1024x768/res/ui.xml @@ -101,6 +101,7 @@ + diff --git a/gui/devices/1280x800/res/ui.xml b/gui/devices/1280x800/res/ui.xml index 0c7ecf0b..ddcdb3f6 100644 --- a/gui/devices/1280x800/res/ui.xml +++ b/gui/devices/1280x800/res/ui.xml @@ -101,6 +101,7 @@ + diff --git a/gui/devices/1920x1200/res/ui.xml b/gui/devices/1920x1200/res/ui.xml index 05a3ee62..2407905b 100644 --- a/gui/devices/1920x1200/res/ui.xml +++ b/gui/devices/1920x1200/res/ui.xml @@ -101,6 +101,7 @@ + diff --git a/gui/devices/2560x1600/res/ui.xml b/gui/devices/2560x1600/res/ui.xml index 57945cb7..8f699ee2 100644 --- a/gui/devices/2560x1600/res/ui.xml +++ b/gui/devices/2560x1600/res/ui.xml @@ -101,6 +101,7 @@ + diff --git a/gui/devices/320x480/res/images/slider-touch.png b/gui/devices/320x480/res/images/slider-touch.png index 2f36fa7cc2a13d4e9146be0b323c1f00efe02d16..77cb80975c2a6d7789062a96c141a9428fd6adae 100644 GIT binary patch literal 3781 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 T{Qb0300000NkvXXu0mjfrz`Cr literal 3028 zcmV;_3oG=AP)%$frobD(qHb~4$7wxe2cLB_7H`S2te zWN7;q#z&Ryn_+YB5v+Xy-LVm+{Iv8_+owGBkpBJL}|z^pu){@cW!I-=fZp+ad(GZQDcCp zrw`xt+dPClg^!4GBjOg&*p%b>hl?z~tB!&7fjYNLM6UJT_l03d9LMiI%+&)$QFOYh z-Y+68T)Jd}V?SP}*}6@Vrk5-HPu!gw-u(*~@Lf5(a>nd0S3L#dN=~ADUkm7BocmWM z#)Q?+j_~8#CL?Z#s-7Fi@uLUQrRD89a>cjM^lzBiS>n>`Rj14-N|M~+yK~p=?!X1& zZVRw62i39jefY`-`9+1iKRvm}tMeHnGZwF2J*_8Vw9fT8s=Elpe`^A;w0 z{xyONdQn{%cjq?RWiaMYguC!DL>?k3cj%99fmKgC$z=cCdw=o%I<)MkBRhqAQN2hO zoU451Yoa5&9*Dbhi>=(o9P(j!fbvV3)Vz?N{9VA)c~oQ>s(%jXzUI(wUvuP2@~@Wi z#6^5!v2w=eMMrjhuNvg2r_ZWw%%SVd#9g^W;L|!fbQfp+C477#B;|_{xu)_S)&c%i z2*V4b@Fa~cxuP6BI+RBF!gnpi#=Os=uH-Gs7ydqcWLG)7NOH6HVlyBVWaIQz;Y!Lf5lQAE}kUL)pfCnT^y7l{CNoB{tsH*;fh-}>NJKRwi zJ|2akM$4X`2z&ZhSSgLEi7p*PKkt7zy8D^2D2g-+!^f-B;(gAU!!W#(q`ZI&uN!7+ z`>1GoR%J47)imaV>&*DBjzrV+Oxlhb=B~+ODmNzwJ*vS zK+}hr($+3@ji~A$J3%96b)uRSQ5}rzZZBhMp5NV_ha^dMGHVW^db~rK%goLlk|etj z8MGyTj5$n*jF6OzU7L(Mp;voITTIL(I7HU4{-r7EGE)_uY9%t}aG5hp6G#)q;mN={ zry|eEmI5MD57KNUGN$%LJ$<0sOb|4&X>BXWIw$ZVnJo0bx>-cdwlW!0`+Qdih#W(j zItr`7xknwa92daLznVrR%=SSGV`{i7SMw=yuC9NnsF^x|$DFF}Ajk}}@`(UtUf5G; zwGUbtQ^Q@knokKX|zB`|;6U9a;tQp4z z{UWl-dG8b87do;tqgx7th+G)v3t20dF*WU5?0mh<;Ffw|x%YnD0jTP&f*=q7sDW&K zr-;n9S{YNbUHND-b@Tc4gF{*_0o(}SDx0ZqSLg0$&9n9NuPq^R8$g)1y`_w)6=7xX zDHXYj;;ulR{8_7ryWe}iJ&K~=E`l#2b5-?4es8YGm;Tm~rlc zf?n=k0>61KLEQ1cD)0Rsi{Qg55qVNJu6FdjI)up5u&1xiy0bAgFtqOJBgz*tz>nFn zxlHd05ciO(uC8t#_r@alm2X^(DlEIDnM~br0$;G5AC39oRc;cwT(Wg1bI%QB$`b&8 z5y!DspYukTqbS0A--pOI*)ahBaqB4Jeh}pgr&}qF`G7lfzHmC?mg>)LAJxsh4T$@q z_r9>tT_C;p)%}_8B*?7Pm5)!NcV!Xh?u+t;WA>bY8)M#=`Em7YCocFYy(`A#nO{tj zO!j|O_3kK&_?=xKf9D`!I1Sh)K_=yMH!HJG93V~S`>u|SR$^n`*Ffha$UMz!FC3wF zeJ3MHc`G7wy!V59KiBQ+0C5~|2TmkS%G`TX!q)y)6^WyKp=0+6tV0`f$cEIF5pa|* z%oXQeX4BduxaWE&X)>(vC;JNWTZXyPzE=Y0F+N(y(!UB=`$DS*nP=g;2z2NCyaio=22d!v)y zl~cq8%fp_&OHs1blN)2+ZHOy3gdh!3Pu~(m?vz)4o#9`;ouxc6Dk6)#_sc7}+~+a& zyMSNy2g5M@BY|Hb5^(aFMLp-rMoCJ~pj_s=bF1u981tUYk3S=+o~=ReHy8(&AJuB0OW zE${{J{lI~Au26i_ z3DZm?IfjU$|ac83`fpZX3g1*b8j9lsKT_FjWoBWxM18~ zD5mC{aZ(lvs}a?AHo%-1n@s - - + + diff --git a/gui/devices/800x480/res/ui.xml b/gui/devices/800x480/res/ui.xml index faa0878b..5c9f07df 100644 --- a/gui/devices/800x480/res/ui.xml +++ b/gui/devices/800x480/res/ui.xml @@ -101,6 +101,7 @@ + diff --git a/gui/devices/landscape/res/landscape.xml b/gui/devices/landscape/res/landscape.xml index fd5fcfe4..c5d29966 100644 --- a/gui/devices/landscape/res/landscape.xml +++ b/gui/devices/landscape/res/landscape.xml @@ -1623,6 +1623,14 @@ + + + + Disable Free Space Check. + + + + Swipe to Back Up diff --git a/gui/devices/portrait/res/portrait.xml b/gui/devices/portrait/res/portrait.xml index 6fb52f30..315b5a8f 100644 --- a/gui/devices/portrait/res/portrait.xml +++ b/gui/devices/portrait/res/portrait.xml @@ -1402,6 +1402,14 @@ + + + + Disable Free Space Check. + + + + Swipe to Back Up backup_run diff --git a/gui/devices/watch/res/watch.xml b/gui/devices/watch/res/watch.xml index 1d4e2907..dfbed16c 100644 --- a/gui/devices/watch/res/watch.xml +++ b/gui/devices/watch/res/watch.xml @@ -1415,11 +1415,19 @@ - + Skip MD5 generation during backup. + + + + Disable Free Space Check. + + + + main diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 25f9dc7a..098169c3 100644 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -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; diff --git a/partitions.hpp b/partitions.hpp index 3cbd8c3b..f74fac9a 100644 --- a/partitions.hpp +++ b/partitions.hpp @@ -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 *Partition_List); int Fstab_Processed(); // Indicates if the fstab has been processed or not