From 19874f14699edf411951a62f5ac880ca6a84d824 Mon Sep 17 00:00:00 2001 From: bigbiff bigbiff Date: Tue, 8 Jan 2019 20:06:57 -0500 Subject: AB/Non AB Devices: updates for moving cache This patchset updates all the places we touch cache on AB devices and non AB devices so that we can write to the appropriate location. AB devices removed the cache partition and moved it to /data/cache. Change-Id: I485ec205a604f1f07ceb7700ae9c4e720fd55c3e --- twrp.cpp | 59 +++++++++++------------------------------------------------ 1 file changed, 11 insertions(+), 48 deletions(-) mode change 100644 => 100755 twrp.cpp (limited to 'twrp.cpp') diff --git a/twrp.cpp b/twrp.cpp old mode 100644 new mode 100755 index 2399c0bb3..6b9cd7552 --- a/twrp.cpp +++ b/twrp.cpp @@ -54,9 +54,6 @@ extern "C" { } #endif -#include -struct selabel_handle *selinux_handle; - //extern int adb_server_main(int is_daemon, int server_port, int /* reply_fd */); TWPartitionManager PartitionManager; @@ -129,45 +126,6 @@ int main(int argc, char **argv) { // Load up all the resources gui_loadResources(); - if (TWFunc::Path_Exists("/prebuilt_file_contexts")) { - if (TWFunc::Path_Exists("/file_contexts")) { - printf("Renaming regular /file_contexts -> /file_contexts.bak\n"); - rename("/file_contexts", "/file_contexts.bak"); - } - printf("Moving /prebuilt_file_contexts -> /file_contexts\n"); - rename("/prebuilt_file_contexts", "/file_contexts"); - } - struct selinux_opt selinux_options[] = { - { SELABEL_OPT_PATH, "/file_contexts" } - }; - selinux_handle = selabel_open(SELABEL_CTX_FILE, selinux_options, 1); - if (!selinux_handle) - printf("No file contexts for SELinux\n"); - else - printf("SELinux contexts loaded from /file_contexts\n"); - { // Check to ensure SELinux can be supported by the kernel - char *contexts = NULL; - - if (PartitionManager.Mount_By_Path("/cache", false) && TWFunc::Path_Exists("/cache/recovery")) { - lgetfilecon("/cache/recovery", &contexts); - if (!contexts) { - lsetfilecon("/cache/recovery", "test"); - lgetfilecon("/cache/recovery", &contexts); - } - } else { - LOGINFO("Could not check /cache/recovery SELinux contexts, using /sbin/teamwin instead which may be inaccurate.\n"); - lgetfilecon("/sbin/teamwin", &contexts); - } - if (!contexts) { - gui_warn("no_kernel_selinux=Kernel does not have support for reading SELinux contexts."); - } else { - free(contexts); - gui_msg("full_selinux=Full SELinux support is present."); - } - } - - PartitionManager.Mount_By_Path("/cache", false); - bool Shutdown = false; bool SkipDecryption = false; string Send_Intent = ""; @@ -272,7 +230,6 @@ int main(int argc, char **argv) { LOGINFO("Backup of TWRP ramdisk done.\n"); #endif - TWFunc::Update_Log_File(); // Offer to decrypt if the device is encrypted if (DataManager::GetIntValue(TW_IS_ENCRYPTED) != 0) { if (SkipDecryption) { @@ -283,10 +240,12 @@ int main(int argc, char **argv) { LOGERR("Failed to start decrypt GUI page.\n"); } else { // Check for and load custom theme if present + TWFunc::check_selinux_support(); gui_loadCustomResources(); } } } else if (datamedia) { + TWFunc::check_selinux_support(); if (tw_get_default_metadata(DataManager::GetSettingsStoragePath().c_str()) != 0) { LOGINFO("Failed to get default contexts and file mode for storage files.\n"); } else { @@ -294,17 +253,20 @@ int main(int argc, char **argv) { } } + // Fixup the RTC clock on devices which require it + if (crash_counter == 0) + TWFunc::Fixup_Time_On_Boot(); + // Read the settings file + TWFunc::Update_Log_File(); DataManager::ReadSettingsFile(); PageManager::LoadLanguage(DataManager::GetStrValue("tw_language")); GUIConsole::Translate_Now(); - // Fixup the RTC clock on devices which require it - if (crash_counter == 0) - TWFunc::Fixup_Time_On_Boot(); - // Run any outstanding OpenRecoveryScript - if ((DataManager::GetIntValue(TW_IS_ENCRYPTED) == 0 || SkipDecryption) && (TWFunc::Path_Exists(SCRIPT_FILE_TMP) || TWFunc::Path_Exists(SCRIPT_FILE_CACHE))) { + std::string cacheDir = TWFunc::get_cache_dir(); + std::string orsFile = cacheDir + "/recovery/openrecoveryscript"; + if ((DataManager::GetIntValue(TW_IS_ENCRYPTED) == 0 || SkipDecryption) && (TWFunc::Path_Exists(SCRIPT_FILE_TMP) || TWFunc::Path_Exists(orsFile))) { OpenRecoveryScript::Run_OpenRecoveryScript(); } @@ -388,3 +350,4 @@ int main(int argc, char **argv) { return 0; } + -- cgit v1.2.3