diff options
-rw-r--r-- | gui/action.cpp | 2 | ||||
-rw-r--r-- | twrp-functions.cpp | 14 | ||||
-rw-r--r-- | twrp-functions.hpp | 2 | ||||
-rw-r--r-- | twrp.cpp | 7 |
4 files changed, 18 insertions, 7 deletions
diff --git a/gui/action.cpp b/gui/action.cpp index 2aa03a637..aa81dff16 100644 --- a/gui/action.cpp +++ b/gui/action.cpp @@ -1555,6 +1555,8 @@ int GUIAction::openrecoveryscript(std::string arg) } } if (reboot) { + // Disable stock recovery reflashing + TWFunc::Disable_Stock_Recovery_Replace(); usleep(2000000); // Sleep for 2 seconds before rebooting TWFunc::tw_reboot(rb_system); } else { diff --git a/twrp-functions.cpp b/twrp-functions.cpp index f5bf1b0f0..55f795c6f 100644 --- a/twrp-functions.cpp +++ b/twrp-functions.cpp @@ -864,7 +864,7 @@ void TWFunc::Fixup_Time_On_Boot() } - LOGINFO("TWFunc::Fixup_Time: will attempt to use the ats files now.\n", sepoch.c_str()); + LOGINFO("TWFunc::Fixup_Time: will attempt to use the ats files now.\n"); // Devices with Qualcomm Snapdragon 800 do some shenanigans with RTC. // They never set it, it just ticks forward from 1970-01-01 00:00, @@ -1038,4 +1038,16 @@ std::string TWFunc::to_string(unsigned long value) { return os.str(); } +void TWFunc::Disable_Stock_Recovery_Replace(void) { + if (PartitionManager.Mount_By_Path("/system", false)) { + // Disable flashing of stock recovery + if (TWFunc::Path_Exists("/system/recovery-from-boot.p")) { + rename("/system/recovery-from-boot.p", "/system/recovery-from-boot.bak"); + gui_print("Renamed stock recovery file in /system to prevent\nthe stock ROM from replacing TWRP.\n"); + sync(); + } + PartitionManager.UnMount_By_Path("/system", false); + } +} + #endif // ndef BUILD_TWRPTAR_MAIN diff --git a/twrp-functions.hpp b/twrp-functions.hpp index c10a184e6..d49cd8499 100644 --- a/twrp-functions.hpp +++ b/twrp-functions.hpp @@ -83,8 +83,8 @@ public: static int Set_Brightness(std::string brightness_value); // Well, you can read, it does what it says, passing return int from TWFunc::Write_File ;) static bool Toggle_MTP(bool enable); // Disables MTP if enable is false and re-enables MTP if enable is true and it was enabled the last time it was toggled off static std::string to_string(unsigned long value); //convert ul to string - static void SetPerformanceMode(bool mode); // support recovery.perf.mode + static void Disable_Stock_Recovery_Replace(); // Disable stock ROMs from replacing TWRP with stock recovery private: static void Copy_Log(string Source, string Destination); @@ -337,13 +337,10 @@ int main(int argc, char **argv) { // Launch the main GUI gui_start(); + // Disable flashing of stock recovery + TWFunc::Disable_Stock_Recovery_Replace(); // Check for su to see if the device is rooted or not if (PartitionManager.Mount_By_Path("/system", false)) { - // Disable flashing of stock recovery - if (TWFunc::Path_Exists("/system/recovery-from-boot.p")) { - rename("/system/recovery-from-boot.p", "/system/recovery-from-boot.bak"); - gui_print("Renamed stock recovery file in /system to prevent\nthe stock ROM from replacing TWRP.\n"); - } if (TWFunc::Path_Exists("/supersu/su") && !TWFunc::Path_Exists("/system/bin/su") && !TWFunc::Path_Exists("/system/xbin/su") && !TWFunc::Path_Exists("/system/bin/.ext/.su")) { // Device doesn't have su installed DataManager::SetValue("tw_busy", 1); |