diff --git a/data.cpp b/data.cpp index f7cd7a2a..1fc7f35d 100755 --- a/data.cpp +++ b/data.cpp @@ -940,6 +940,11 @@ void DataManager::SetDefaultValues() mData.SetValue("tw_enable_adb_backup", "0"); + if (TWFunc::Path_Exists("/system/bin/logcat")) + mConst.SetValue("tw_logcat_exists", "1"); + else + mConst.SetValue("tw_logcat_exists", "0"); + if (TWFunc::Path_Exists("/system/bin/magiskboot")) mConst.SetValue("tw_has_repack_tools", "1"); else diff --git a/gui/action.cpp b/gui/action.cpp index c63337c7..464ed278 100755 --- a/gui/action.cpp +++ b/gui/action.cpp @@ -676,8 +676,10 @@ int GUIAction::copylog(std::string arg __unused) { string dst, curr_storage; int copy_kernel_log = 0; + int copy_logcat = 1; DataManager::GetValue("tw_include_kernel_log", copy_kernel_log); + DataManager::GetValue("tw_include_logcat", copy_logcat); PartitionManager.Mount_Current_Storage(true); curr_storage = DataManager::GetCurrentStoragePath(); dst = curr_storage + "/recovery.log"; @@ -685,6 +687,8 @@ int GUIAction::copylog(std::string arg __unused) tw_set_default_metadata(dst.c_str()); if (copy_kernel_log) TWFunc::copy_kernel_log(curr_storage); + if (copy_logcat) + TWFunc::copy_logcat(curr_storage); sync(); gui_msg(Msg("copy_log=Copied recovery log to {1}")(dst)); } else diff --git a/gui/theme/common/landscape.xml b/gui/theme/common/landscape.xml index 369c4d86..0367e551 100755 --- a/gui/theme/common/landscape.xml +++ b/gui/theme/common/landscape.xml @@ -2993,7 +2993,7 @@ tw_slider_text={@swipe_reboot=Swipe to Reboot} rebootcheck - + + @@ -3737,7 +3737,14 @@ + + {@include_logcat=Include Logcat} + + + + + {@include_kernel_log=Include Kernel Log} diff --git a/gui/theme/common/watch.xml b/gui/theme/common/watch.xml index 060d50a7..2cea6364 100755 --- a/gui/theme/common/watch.xml +++ b/gui/theme/common/watch.xml @@ -266,6 +266,13 @@ + + + + {@include_logcat=Include Logcat} + + + {@swipe_confirm= Confirm} diff --git a/twrp-functions.cpp b/twrp-functions.cpp index af211f40..c56e194e 100755 --- a/twrp-functions.cpp +++ b/twrp-functions.cpp @@ -1165,6 +1165,17 @@ void TWFunc::copy_kernel_log(string curr_storage) { tw_set_default_metadata(dmesgDst.c_str()); } +void TWFunc::copy_logcat(string curr_storage) { + std::string logcatDst = curr_storage + "/logcat.txt"; + std::string logcatCmd = "logcat -d"; + + std::string result; + Exec_Cmd(logcatCmd, result, false); + write_to_file(logcatDst, result); + gui_msg(Msg("copy_logcat=Copied logcat to {1}")(logcatDst)); + tw_set_default_metadata(logcatDst.c_str()); +} + bool TWFunc::isNumber(string strtocheck) { int num = 0; std::istringstream iss(strtocheck); diff --git a/twrp-functions.hpp b/twrp-functions.hpp index 8979a66a..dc51454d 100755 --- a/twrp-functions.hpp +++ b/twrp-functions.hpp @@ -108,6 +108,7 @@ public: static void Disable_Stock_Recovery_Replace(); // Disable stock ROMs from replacing TWRP with stock recovery static unsigned long long IOCTL_Get_Block_Size(const char* block_device); static void copy_kernel_log(string curr_storage); // Copy Kernel Log to Current Storage (PSTORE/KMSG) + static void copy_logcat(string curr_storage); // Copy Logcat to Current Storage static bool isNumber(string strtocheck); // return true if number, false if not a number static int stream_adb_backup(string &Restore_Name); // Tell ADB Backup to Stream to TWRP from GUI selection static std::string get_log_dir(); // return recovery log storage directory