copy log: add option to include logcat
Change-Id: I9689df4560d5209f385fbbc3e233859754b3ebbd
diff --git a/data.cpp b/data.cpp
index a40a7e5..bc31a65 100755
--- a/data.cpp
+++ b/data.cpp
@@ -932,6 +932,11 @@
mData.SetValue("tw_enable_adb_backup", "0");
+ if (TWFunc::Path_Exists("/sbin/logcat"))
+ mConst.SetValue("tw_logcat_exists", "1");
+ else
+ mConst.SetValue("tw_logcat_exists", "0");
+
if (TWFunc::Path_Exists("/sbin/magiskboot"))
mConst.SetValue("tw_has_repack_tools", "1");
else
diff --git a/gui/action.cpp b/gui/action.cpp
index dbe4ae7..b23fdeb 100755
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -669,8 +669,10 @@
{
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";
@@ -678,6 +680,8 @@
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 99cd126..ae9b4be 100755
--- a/gui/theme/common/landscape.xml
+++ b/gui/theme/common/landscape.xml
@@ -2842,7 +2842,7 @@
<action function="set">tw_slider_text={@swipe_reboot=Swipe to Reboot}</action>
<action function="page">rebootcheck</action>
</actions>
- </button>
+ </listitem>
</listbox>
<button style="main_button">
@@ -3465,7 +3465,14 @@
</text>
<checkbox>
+ <condition var1="tw_logcat_exists" var2="1"/>
<placement x="%indent%" y="%row4_y%"/>
+ <text>{@include_logcat=Include Logcat}</text>
+ <data variable="tw_include_logcat" value="1"/>
+ </checkbox>
+
+ <checkbox>
+ <placement x="%indent%" y="%row6_y%"/>
<text>{@include_kernel_log=Include Kernel Log}</text>
<data variable="tw_include_kernel_log" value="1"/>
</checkbox>
diff --git a/gui/theme/common/languages/en.xml b/gui/theme/common/languages/en.xml
index ac603e6..13b2975 100755
--- a/gui/theme/common/languages/en.xml
+++ b/gui/theme/common/languages/en.xml
@@ -740,7 +740,9 @@
<string name="twrp_adbbu_option">--twrp option is required to enable twrp adb backup</string>
<string name="partition_not_found">path: {1} not found in partititon list</string>
<string name="copy_kernel_log">Copied kernel log to {1}</string>
+ <string name="copy_logcat">Copied logcat to {1}</string>
<string name="include_kernel_log">Include Kernel Log</string>
+ <string name="include_logcat">Include Logcat</string>
<string name="sha2_chk">Use SHA2 for hashing</string>
<string name="unable_set_boot_slot">Error changing bootloader boot slot to {1}</string>
<string name="unmount_sys_install">Unmount System before installing a ZIP</string>
diff --git a/gui/theme/common/portrait.xml b/gui/theme/common/portrait.xml
index 4f36e46..4efed64 100755
--- a/gui/theme/common/portrait.xml
+++ b/gui/theme/common/portrait.xml
@@ -2998,7 +2998,7 @@
<action function="set">tw_slider_text={@swipe_reboot=Swipe to Reboot}</action>
<action function="page">rebootcheck</action>
</actions>
- </button>
+ </listitem>
</listbox>
<text style="text_m">
@@ -3586,7 +3586,14 @@
</text>
<checkbox>
+ <condition var1="tw_logcat_exists" var2="1"/>
<placement x="%indent%" y="%row4_y%"/>
+ <text>{@include_logcat=Include Logcat}</text>
+ <data variable="tw_include_logcat" value="1"/>
+ </checkbox>
+
+ <checkbox>
+ <placement x="%indent%" y="%row6_y%"/>
<text>{@include_kernel_log=Include Kernel Log}</text>
<data variable="tw_include_kernel_log" value="1"/>
</checkbox>
diff --git a/gui/theme/common/watch.xml b/gui/theme/common/watch.xml
index 251e0f6..171fc38 100755
--- a/gui/theme/common/watch.xml
+++ b/gui/theme/common/watch.xml
@@ -266,6 +266,13 @@
<data variable="tw_include_kernel_log" value="1"/>
</checkbox>
+ <checkbox>
+ <condition var1="tw_logcat_exists" var2="1"/>
+ <placement x="%indent%" y="%row2_y%"/>
+ <text>{@include_logcat=Include Logcat}</text>
+ <data variable="tw_include_logcat" value="1"/>
+ </checkbox>
+
<slider>
<text>{@swipe_confirm= Confirm}</text>
<actions>
diff --git a/twrp-functions.cpp b/twrp-functions.cpp
index 983d277..246d73e 100755
--- a/twrp-functions.cpp
+++ b/twrp-functions.cpp
@@ -1231,6 +1231,17 @@
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 cd772e5..0009c8b 100755
--- a/twrp-functions.hpp
+++ b/twrp-functions.hpp
@@ -113,6 +113,7 @@
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