Add support to change TWRP Folder
Change-Id: Id3b3b46d492bf83d1d9d3f535c880ea9d15b4107
This commit is contained in:
@@ -526,7 +526,7 @@ void DataManager::SetBackupFolder()
|
||||
{
|
||||
string str = GetCurrentStoragePath();
|
||||
TWPartition* partition = PartitionManager.Find_Partition_By_Path(str);
|
||||
str += "/TWRP/BACKUPS/";
|
||||
str += TWFunc::Check_For_TwrpFolder() + "/BACKUPS/";
|
||||
|
||||
string dev_id;
|
||||
GetValue("device_id", dev_id);
|
||||
@@ -613,9 +613,11 @@ void DataManager::SetDefaultValues()
|
||||
mConst.SetValue(TW_SHOW_DUMLOCK, "0");
|
||||
#endif
|
||||
|
||||
mData.SetValue(TW_RECOVERY_FOLDER_VAR, TW_DEFAULT_RECOVERY_FOLDER);
|
||||
|
||||
str = GetCurrentStoragePath();
|
||||
mPersist.SetValue(TW_ZIP_LOCATION_VAR, str);
|
||||
str += "/TWRP/BACKUPS/";
|
||||
str += DataManager::GetStrValue(TW_RECOVERY_FOLDER_VAR) + "/BACKUPS/";
|
||||
|
||||
string dev_id;
|
||||
mConst.GetValue("device_id", dev_id);
|
||||
@@ -1111,8 +1113,8 @@ void DataManager::ReadSettingsFile(void)
|
||||
|
||||
memset(mkdir_path, 0, sizeof(mkdir_path));
|
||||
memset(settings_file, 0, sizeof(settings_file));
|
||||
sprintf(mkdir_path, "%s/TWRP", GetSettingsStoragePath().c_str());
|
||||
sprintf(settings_file, "%s/.twrps", mkdir_path);
|
||||
sprintf(mkdir_path, "%s%s", GetSettingsStoragePath().c_str(), GetStrValue(TW_RECOVERY_FOLDER_VAR).c_str());
|
||||
sprintf(settings_file, "%s/%s", mkdir_path, TW_SETTINGS_FILE);
|
||||
|
||||
if (!PartitionManager.Mount_Settings_Storage(false))
|
||||
{
|
||||
@@ -1152,3 +1154,11 @@ void DataManager::Vibrate(const string& varName)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void DataManager::LoadTWRPFolderInfo(void)
|
||||
{
|
||||
string mainPath = GetCurrentStoragePath();
|
||||
SetValue(TW_RECOVERY_FOLDER_VAR, TWFunc::Check_For_TwrpFolder());
|
||||
mBackingFile = mainPath + GetStrValue(TW_RECOVERY_FOLDER_VAR) + '/' + TW_SETTINGS_FILE;
|
||||
}
|
||||
@@ -32,6 +32,7 @@ public:
|
||||
static int LoadValues(const string& filename);
|
||||
static int LoadPersistValues(void);
|
||||
static int Flush();
|
||||
static void LoadTWRPFolderInfo(void);
|
||||
|
||||
// Core get routines
|
||||
static int GetValue(const string& varName, string& value);
|
||||
@@ -63,8 +64,10 @@ public:
|
||||
static string GetCurrentStoragePath(void);
|
||||
static string GetSettingsStoragePath(void);
|
||||
|
||||
protected:
|
||||
public:
|
||||
static string mBackingFile;
|
||||
|
||||
protected:
|
||||
static int mInitialized;
|
||||
static InfoManager mPersist;
|
||||
static InfoManager mData;
|
||||
|
||||
@@ -242,6 +242,7 @@ GUIAction::GUIAction(xml_node<>* node)
|
||||
ADD_ACTION(uninstalltwrpsystemapp);
|
||||
ADD_ACTION(repackimage);
|
||||
ADD_ACTION(fixabrecoverybootloop);
|
||||
ADD_ACTION(applycustomtwrpfolder);
|
||||
#ifndef TW_EXCLUDE_NANO
|
||||
ADD_ACTION(editfile);
|
||||
#endif
|
||||
@@ -2287,3 +2288,36 @@ int GUIAction::editfile(std::string arg) {
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
int GUIAction::applycustomtwrpfolder(string arg __unused)
|
||||
{
|
||||
operation_start("ChangingTWRPFolder");
|
||||
string storageFolder = DataManager::GetSettingsStoragePath();
|
||||
string newFolder = storageFolder + '/' + arg;
|
||||
string newBackupFolder = newFolder + "/BACKUPS/" + DataManager::GetStrValue("device_id");
|
||||
string prevFolder = storageFolder + DataManager::GetStrValue(TW_RECOVERY_FOLDER_VAR);
|
||||
bool ret = false;
|
||||
|
||||
if (TWFunc::Path_Exists(newFolder)) {
|
||||
gui_msg(Msg(msg::kError, "tw_folder_exists=A folder with that name already exists!"));
|
||||
} else {
|
||||
ret = true;
|
||||
}
|
||||
|
||||
if (newFolder != prevFolder && ret) {
|
||||
ret = TWFunc::Exec_Cmd("mv -f \"" + prevFolder + "\" \"" + newFolder + '\"') != 0 ? false : true;
|
||||
} else {
|
||||
gui_msg(Msg(msg::kError, "tw_folder_exists=A folder with that name already exists!"));
|
||||
}
|
||||
|
||||
if (ret) ret = TWFunc::Recursive_Mkdir("\"" + newBackupFolder + "\"") ? true : false;
|
||||
|
||||
|
||||
if (ret) {
|
||||
DataManager::SetValue(TW_RECOVERY_FOLDER_VAR, '/' + arg);
|
||||
DataManager::SetValue(TW_BACKUPS_FOLDER_VAR, newBackupFolder);
|
||||
DataManager::mBackingFile = newFolder + '/' + TW_SETTINGS_FILE;
|
||||
}
|
||||
operation_end((int)!ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -374,9 +374,11 @@ protected:
|
||||
int enableadb(std::string arg);
|
||||
int enablefastboot(std::string arg);
|
||||
int changeterminal(std::string arg);
|
||||
int applycustomtwrpfolder(std::string arg);
|
||||
#ifndef TW_EXCLUDE_NANO
|
||||
int editfile(std::string arg);
|
||||
#endif
|
||||
|
||||
int simulate;
|
||||
};
|
||||
|
||||
|
||||
@@ -3627,6 +3627,10 @@
|
||||
|
||||
<listbox style="advanced_listbox">
|
||||
<placement x="%center_x%" y="%row2_y%" w="%content_half_width%" h="%fileselector_install_height%"/>
|
||||
<listitem name="{@change_twrp_folder_btn=Change TWRP folder}">
|
||||
<condition var1="tw_is_encrypted" var2="0"/>
|
||||
<action function="page">changeTwrpFolder</action>
|
||||
</listitem>
|
||||
<listitem name="{@decrypt_users=Decrypt Users}">
|
||||
<conditions>
|
||||
<condition var1="tw_is_fbe" var2="1"/>
|
||||
@@ -5779,5 +5783,102 @@ edi <conditions>
|
||||
<action function="page">advanced</action>
|
||||
</action>
|
||||
</page>
|
||||
|
||||
<page name="changeTwrpFolder">
|
||||
<template name="page"/>
|
||||
|
||||
<text style="text_l">
|
||||
<placement x="%col1_x_header%" y="%row3_header_y%"/>
|
||||
<text>{@advanced_hdr=Advanced}</text>
|
||||
</text>
|
||||
|
||||
<text style="text_m">
|
||||
<placement x="%col1_x_header%" y="%row4_header_y%"/>
|
||||
<text>{@change_twrp_folder_btn=Change TWRP folder}</text>
|
||||
</text>
|
||||
|
||||
<text style="text_m_accent">
|
||||
<placement x="%col1_x_left%" y="%row2_y%"/>
|
||||
<text>{@name=Name:}</text>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<placement x="%col1_x_left%" y="%row2_input_y%" w="%content_width%" h="%input_height%"/>
|
||||
<text>%tw_custom_folder%</text>
|
||||
<data name="tw_custom_folder"/>
|
||||
<restrict minlen="1" maxlen="64" allow="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"/>
|
||||
<actions>
|
||||
<action function="set">tw_back=changeTwrpFolder</action>
|
||||
<action function="set">tw_action=applycustomtwrpfolder</action>
|
||||
<action function="set">tw_action_param=%tw_custom_folder%</action>
|
||||
<action function="set">tw_text1={@confirm_action=Confirm}</action>
|
||||
<action function="set">tw_text2={@rename_backup_confirm2=This cannot be undone!}</action>
|
||||
<action function="set">tw_action_text1={@change_twrp_folder_on_process=Changing TWRP folder}</action>
|
||||
<action function="set">tw_complete_text1={@change_twrp_folder_after_process=TWRP folder changed to} %tw_custom_folder%</action>
|
||||
<action function="set">tw_slider_text={@swipe_to_confirm=Swipe to Confirm}</action>
|
||||
<action function="set">tw_filecheck=/sdcard/%tw_custom_folder%</action>
|
||||
<action function="set">tw_existpage=changeTwrpFolder</action>
|
||||
<action function="set">tw_notexistpage=confirm_action</action>
|
||||
<action function="page">filecheck</action>
|
||||
</actions>
|
||||
</input>
|
||||
|
||||
<fill color="%accent_color%">
|
||||
<placement x="%col1_x_left%" y="row4_y" w="%content_width%" h="input_line_width" placement="1"/>
|
||||
</fill>
|
||||
|
||||
<fill color="%text_fail_color%">
|
||||
<condition var1="tw_fileexists" var2="1"/>
|
||||
<placement x="%col1_x_left%" y="row4_y" w="%content_width%" h="input_line_width" placement="1"/>
|
||||
</fill>
|
||||
|
||||
<text style="text_m_fail">
|
||||
<condition var1="tw_fileexists" var2="1"/>
|
||||
<placement x="%col1_x_left%" y="%row4_y%"/>
|
||||
<text>{@tw_folder_exists=A folder with that name already exists!}</text>
|
||||
</text>
|
||||
|
||||
<button style="main_button_half_width_low">
|
||||
<placement x="%indent%" y="%row5_y%"/>
|
||||
<text>{@cancel_btn=Cancel}</text>
|
||||
<action function="page">advanced</action>
|
||||
</button>
|
||||
|
||||
<button style="main_button_half_width_low">
|
||||
<condition var1="tw_recovery_folder" op="!=" var2="/TWRP"/>
|
||||
<placement x="%date_button_x%" y="%row5_y%"/>
|
||||
<text>{@restore_defaults_btn=Restore Defaults}</text>
|
||||
<actions>
|
||||
<action function="set">tw_back=changeTwrpFolder</action>
|
||||
<action function="set">tw_action=applycustomtwrpfolder</action>
|
||||
<action function="set">tw_action_param=TWRP</action>
|
||||
<action function="set">tw_text1={@confirm_action=Confirm}</action>
|
||||
<action function="set">tw_text2={@rename_backup_confirm2=This cannot be undone!}</action>
|
||||
<action function="set">tw_action_text1={@change_twrp_folder_on_process=Changing TWRP folder}</action>
|
||||
<action function="set">tw_complete_text1={@change_twrp_folder_after_process=TWRP folder changed to} TWRP</action>
|
||||
<action function="set">tw_slider_text={@swipe_to_confirm=Swipe to Confirm}</action>
|
||||
<action function="set">tw_filecheck=/sdcard/TWRP</action>
|
||||
<action function="set">tw_existpage=changeTwrpFolder</action>
|
||||
<action function="set">tw_notexistpage=confirm_action</action>
|
||||
<action function="page">filecheck</action>
|
||||
</actions>
|
||||
</button>
|
||||
|
||||
<template name="keyboardtemplate"/>
|
||||
|
||||
<action>
|
||||
<touch key="home"/>
|
||||
<actions>
|
||||
<action function="page">main</action>
|
||||
</actions>
|
||||
</action>
|
||||
|
||||
<action>
|
||||
<touch key="back"/>
|
||||
<actions>
|
||||
<action function="page">advanced</action>
|
||||
</actions>
|
||||
</action>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -754,5 +754,9 @@
|
||||
<string name="rescue_party3"> 3. Clean-flash your ROM.</string>
|
||||
<string name="rescue_party4">The reported problem is: </string>
|
||||
<string name="restore_system_context">Unable to get default context for {1} -- Android may not boot.</string>
|
||||
<string name="change_twrp_folder_btn">Change TWRP folder</string>
|
||||
<string name="change_twrp_folder_on_process">Changing TWRP folder</string>
|
||||
<string name="change_twrp_folder_after_process">TWRP folder changed to</string>
|
||||
<string name="tw_folder_exists">A folder with that name already exists!</string>
|
||||
</resources>
|
||||
</language>
|
||||
|
||||
@@ -3749,6 +3749,10 @@
|
||||
|
||||
<listbox style="advanced_listbox">
|
||||
<placement x="%indent%" y="%row13a_y%" w="%content_width%" h="%listbox_advanced_height%"/>
|
||||
<listitem name="Change TWRP Folder">
|
||||
<condition var1="tw_is_encrypted" var2="0"/>
|
||||
<action function="page">changeTwrpFolder</action>
|
||||
</listitem>
|
||||
<listitem name="{@decrypt_users=Decrypt Users}">
|
||||
<conditions>
|
||||
<condition var1="tw_is_fbe" var2="1"/>
|
||||
@@ -5507,5 +5511,104 @@
|
||||
<action function="page">advanced</action>
|
||||
</action>
|
||||
</page>
|
||||
|
||||
<page name="changeTwrpFolder">
|
||||
<template name="page"/>
|
||||
|
||||
<text style="text_l">
|
||||
<placement x="%col1_x_header%" y="%row3_header_y%"/>
|
||||
<text>{@advanced_hdr=Advanced}</text>
|
||||
</text>
|
||||
|
||||
<text style="text_m">
|
||||
<placement x="%col1_x_header%" y="%row4_header_y%"/>
|
||||
<text>{@change_twrp_folder_btn=Change TWRP folder}</text>
|
||||
</text>
|
||||
|
||||
<text style="text_m_accent">
|
||||
<placement x="%indent%" y="%row2_y%"/>
|
||||
<text>{@name=Name:}</text>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<placement x="%indent%" y="%row2_input_y%" w="%content_width%" h="%input_height%"/>
|
||||
<text>%tw_custom_folder%</text>
|
||||
<data name="tw_custom_folder"/>
|
||||
<restrict minlen="1" maxlen="64" allow="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"/>
|
||||
<actions>
|
||||
<action function="set">tw_back=changeTwrpFolder</action>
|
||||
<action function="set">tw_action=applycustomtwrpfolder</action>
|
||||
<action function="set">tw_action_param=%tw_custom_folder%</action>
|
||||
<action function="set">tw_text1={@confirm_action=Confirm}</action>
|
||||
<action function="set">tw_text2={@rename_backup_confirm2=This cannot be undone!}</action>
|
||||
<action function="set">tw_action_text1={@change_twrp_folder_on_process=Changing TWRP folder}</action>
|
||||
<action function="set">tw_complete_text1={@change_twrp_folder_after_process=TWRP folder changed to} %tw_custom_folder%</action>
|
||||
<action function="set">tw_slider_text={@swipe_to_confirm=Swipe to Confirm}</action>
|
||||
<action function="set">tw_filecheck=/sdcard/%tw_custom_folder%</action>
|
||||
<action function="set">tw_existpage=changeTwrpFolder</action>
|
||||
<action function="set">tw_notexistpage=confirm_action</action>
|
||||
<action function="page">filecheck</action>
|
||||
</actions>
|
||||
</input>
|
||||
|
||||
<fill color="%accent_color%">
|
||||
<placement x="%indent%" y="row4_y" w="%content_width%" h="input_line_width" placement="1"/>
|
||||
</fill>
|
||||
|
||||
<fill color="%text_fail_color%">
|
||||
<condition var1="tw_fileexists" var2="1"/>
|
||||
<placement x="%indent%" y="row4_y" w="%content_width%" h="input_line_width" placement="1"/>
|
||||
</fill>
|
||||
|
||||
<text style="text_m_fail">
|
||||
<condition var1="tw_fileexists" var2="1"/>
|
||||
<placement x="%indent%" y="%row4a_y%"/>
|
||||
<text>{@tw_folder_exists=A folder with that name already exists!}</text>
|
||||
</text>
|
||||
|
||||
<button style="main_button_half_height">
|
||||
<placement x="%indent%" y="%row10_y%"/>
|
||||
<text>{@cancel_btn=Cancel}</text>
|
||||
<actions>
|
||||
<action function="page">advanced</action>
|
||||
</actions>
|
||||
</button>
|
||||
|
||||
<button style="main_button_half_height">
|
||||
<condition var1="tw_recovery_folder" op="!=" var2="/TWRP"/>
|
||||
<placement x="%center_x%" y="%row10_y%"/>
|
||||
<text>{@restore_defaults_btn=Restore Defaults}</text>
|
||||
<actions>
|
||||
<action function="set">tw_back=changeTwrpFolder</action>
|
||||
<action function="set">tw_action=applycustomtwrpfolder</action>
|
||||
<action function="set">tw_action_param=TWRP</action>
|
||||
<action function="set">tw_text1={@confirm_action=Confirm}</action>
|
||||
<action function="set">tw_text2={@rename_backup_confirm2=This cannot be undone!}</action>
|
||||
<action function="set">tw_action_text1={@change_twrp_folder_on_process=Changing TWRP folder}</action>
|
||||
<action function="set">tw_complete_text1={@change_twrp_folder_after_process=TWRP folder changed to} TWRP</action>
|
||||
<action function="set">tw_slider_text={@swipe_to_confirm=Swipe to Confirm}</action>
|
||||
<action function="set">tw_filecheck=/sdcard/TWRP</action>
|
||||
<action function="set">tw_existpage=changeTwrpFolder</action>
|
||||
<action function="set">tw_notexistpage=confirm_action</action>
|
||||
<action function="page">filecheck</action>
|
||||
</actions>
|
||||
</button>
|
||||
|
||||
<template name="keyboardtemplate"/>
|
||||
|
||||
<action>
|
||||
<touch key="home"/>
|
||||
<actions>
|
||||
<action function="page">main</action>
|
||||
</actions>
|
||||
</action>
|
||||
|
||||
<action>
|
||||
<touch key="back"/>
|
||||
<actions>
|
||||
<action function="page">advanced</action>
|
||||
</actions>
|
||||
</action>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -4232,6 +4232,10 @@
|
||||
|
||||
<listbox style="advanced_listbox">
|
||||
<placement x="%indent%" y="%row2_header_y%" w="%content_width%" h="%fileselector_install_height%"/>
|
||||
<listitem name="{@change_twrp_folder_btn=Change TWRP folder}">
|
||||
<condition var1="tw_is_encrypted" var2="0"/>
|
||||
<action function="page">changeTwrpFolder</action>
|
||||
</listitem>
|
||||
<listitem name="{@decrypt_users=Decrypt Users}">
|
||||
<conditions>
|
||||
<condition var1="tw_is_fbe" var2="1"/>
|
||||
@@ -5880,5 +5884,99 @@
|
||||
<action function="page">advanced</action>
|
||||
</action>
|
||||
</page>
|
||||
|
||||
<page name="changeTwrpFolder">
|
||||
<template name="page"/>
|
||||
|
||||
<template name="statusbar"/>
|
||||
|
||||
<text style="text_m">
|
||||
<placement x="%col1_x_left%" y="%row1_header_y%"/>
|
||||
<text>{@change_twrp_folder_btn=Change TWRP folder}</text>
|
||||
</text>
|
||||
|
||||
<text style="text_m_accent">
|
||||
<placement x="%col1_x_left%" y="%row1_y%"/>
|
||||
<text>{@name=Name:}</text>
|
||||
</text>
|
||||
|
||||
<input>
|
||||
<placement x="%col1_x_left%" y="%row2_y%" w="%content_width%" h="%input_height%"/>
|
||||
<text>%tw_custom_folder%</text>
|
||||
<data name="tw_custom_folder"/>
|
||||
<restrict minlen="1" maxlen="64" allow="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"/>
|
||||
<actions>
|
||||
<action function="set">tw_back=changeTwrpFolder</action>
|
||||
<action function="set">tw_action=applycustomtwrpfolder</action>
|
||||
<action function="set">tw_action_param=%tw_custom_folder%</action>
|
||||
<action function="set">tw_text1={@confirm_action=Confirm}</action>
|
||||
<action function="set">tw_text2={@rename_backup_confirm2=This cannot be undone!}</action>
|
||||
<action function="set">tw_action_text1={@change_twrp_folder_on_process=Changing TWRP folder}</action>
|
||||
<action function="set">tw_complete_text1={@change_twrp_folder_after_process=TWRP folder changed to} %tw_custom_folder%</action>
|
||||
<action function="set">tw_slider_text={@swipe_to_confirm=Swipe to Confirm}</action>
|
||||
<action function="set">tw_filecheck=/sdcard/%tw_custom_folder%</action>
|
||||
<action function="set">tw_existpage=changeTwrpFolder</action>
|
||||
<action function="set">tw_notexistpage=confirm_action</action>
|
||||
<action function="page">filecheck</action>
|
||||
</actions>
|
||||
</input>
|
||||
|
||||
<fill color="%accent_color%">
|
||||
<placement x="%col1_x_left%" y="%row3_input_y%" w="%content_width%" h="%input_line_width%" placement="1"/>
|
||||
</fill>
|
||||
|
||||
<fill color="%text_fail_color%">
|
||||
<condition var1="tw_fileexists" var2="1"/>
|
||||
<placement x="%col1_x_left%" y="%row3_input_y%" w="%content_width%" h="%input_line_width%" placement="1"/>
|
||||
</fill>
|
||||
|
||||
<text style="text_m_fail">
|
||||
<condition var1="tw_fileexists" var2="1"/>
|
||||
<placement x="%col1_x_left%" y="%row3_input_y%"/>
|
||||
<text>{@tw_folder_exists=A folder with that name already exists!}</text>
|
||||
</text>
|
||||
|
||||
<button style="main_button_half_width_low">
|
||||
<placement x="%col1_x_left%" y="%row4_y%"/>
|
||||
<text>{@cancel_btn=Cancel}</text>
|
||||
<action function="page">advanced2</action>
|
||||
</button>
|
||||
|
||||
<button style="main_button_half_height">
|
||||
<condition var1="tw_recovery_folder" op="!=" var2="/TWRP"/>
|
||||
<placement x="%col1_x_right%" y="%row4_y%"/>
|
||||
<text>{@restore_defaults_btn=Restore Defaults}</text>
|
||||
<actions>
|
||||
<action function="set">tw_back=changeTwrpFolder</action>
|
||||
<action function="set">tw_action=applycustomtwrpfolder</action>
|
||||
<action function="set">tw_action_param=TWRP</action>
|
||||
<action function="set">tw_text1={@confirm_action=Confirm}</action>
|
||||
<action function="set">tw_text2={@rename_backup_confirm2=This cannot be undone!}</action>
|
||||
<action function="set">tw_action_text1={@change_twrp_folder_on_process=Changing TWRP folder}</action>
|
||||
<action function="set">tw_complete_text1={@change_twrp_folder_after_process=TWRP folder changed to} TWRP</action>
|
||||
<action function="set">tw_slider_text={@swipe_to_confirm=Swipe to Confirm}</action>
|
||||
<action function="set">tw_filecheck=/sdcard/TWRP</action>
|
||||
<action function="set">tw_existpage=changeTwrpFolder</action>
|
||||
<action function="set">tw_notexistpage=confirm_action</action>
|
||||
<action function="page">filecheck</action>
|
||||
</actions>
|
||||
</button>
|
||||
|
||||
<template name="keyboardtemplate"/>
|
||||
|
||||
<action>
|
||||
<touch key="home"/>
|
||||
<actions>
|
||||
<action function="page">main</action>
|
||||
</actions>
|
||||
</action>
|
||||
|
||||
<action>
|
||||
<touch key="back"/>
|
||||
<actions>
|
||||
<action function="page">advanced2</action>
|
||||
</actions>
|
||||
</action>
|
||||
</page>
|
||||
</pages>
|
||||
</recovery>
|
||||
|
||||
@@ -1770,6 +1770,7 @@ void TWPartitionManager::Post_Decrypt(const string& Block_Device) {
|
||||
DataManager::SetValue("tw_settings_path", "/data/media/0");
|
||||
dat->UnMount(false);
|
||||
}
|
||||
DataManager::LoadTWRPFolderInfo();
|
||||
Update_System_Details();
|
||||
Output_Partition(dat);
|
||||
UnMount_Main_Partitions();
|
||||
|
||||
@@ -1414,4 +1414,97 @@ bool TWFunc::Set_Encryption_Policy(std::string path, const fscrypt_encryption_po
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
string TWFunc::Check_For_TwrpFolder() {
|
||||
string oldFolder = "";
|
||||
vector<string> customTWRPFolders;
|
||||
string mainPath = DataManager::GetCurrentStoragePath();
|
||||
DIR* d;
|
||||
struct dirent* de;
|
||||
|
||||
if(DataManager::GetIntValue(TW_IS_ENCRYPTED)) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
|
||||
d = opendir(mainPath.c_str());
|
||||
if (d == NULL) {
|
||||
goto exit;
|
||||
}
|
||||
|
||||
while ((de = readdir(d)) != NULL) {
|
||||
string name = de->d_name;
|
||||
string fullPath = mainPath + '/' + name;
|
||||
unsigned char type = de->d_type;
|
||||
|
||||
if(name == "." || name == "..") continue;
|
||||
|
||||
if(type == DT_UNKNOWN) {
|
||||
type = Get_D_Type_From_Stat(fullPath);
|
||||
}
|
||||
|
||||
if(type == DT_DIR && Path_Exists(fullPath + '/' + TW_SETTINGS_FILE)) {
|
||||
if('/' + name == TW_DEFAULT_RECOVERY_FOLDER){
|
||||
oldFolder = name;
|
||||
} else {
|
||||
customTWRPFolders.push_back(name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
closedir(d);
|
||||
|
||||
if(oldFolder == "" && customTWRPFolders.empty()) {
|
||||
LOGINFO("No recovery folder found. Using default folder.\n");
|
||||
goto exit;
|
||||
} else if(customTWRPFolders.empty()) {
|
||||
LOGINFO("No custom recovery folder found. Using TWRP as default.\n");
|
||||
goto exit;
|
||||
} else {
|
||||
if(customTWRPFolders.size() > 1) {
|
||||
LOGINFO("More than one custom recovery folder found. Using first one from the list.\n");
|
||||
} else {
|
||||
LOGINFO("One custom recovery folder found.\n");
|
||||
}
|
||||
string customPath = '/' + customTWRPFolders.at(0);
|
||||
|
||||
if(Path_Exists(mainPath + TW_DEFAULT_RECOVERY_FOLDER)) {
|
||||
string oldBackupFolder = mainPath + TW_DEFAULT_RECOVERY_FOLDER + "/BACKUPS/" + DataManager::GetStrValue("device_id");
|
||||
string newBackupFolder = mainPath + customPath + "/BACKUPS/" + DataManager::GetStrValue("device_id");
|
||||
|
||||
if(Path_Exists(oldBackupFolder)) {
|
||||
vector<string> backups;
|
||||
d = opendir(oldBackupFolder.c_str());
|
||||
|
||||
if (d != NULL) {
|
||||
while ((de = readdir(d)) != NULL) {
|
||||
string name = de->d_name;
|
||||
unsigned char type = de->d_type;
|
||||
|
||||
if(name == "." || name == "..") continue;
|
||||
|
||||
if(type == DT_UNKNOWN) {
|
||||
type = Get_D_Type_From_Stat(mainPath + '/' + name);
|
||||
}
|
||||
|
||||
if(type == DT_DIR) {
|
||||
backups.push_back(name);
|
||||
}
|
||||
}
|
||||
closedir(d);
|
||||
}
|
||||
|
||||
for(auto it = backups.begin(); it != backups.end(); it++) {
|
||||
Exec_Cmd("mv -f \"" + oldBackupFolder + '/' + *it + "\" \"" + newBackupFolder + '/' + *it + (Path_Exists(newBackupFolder + '/' + *it) ? "_new\"" : "\""));
|
||||
}
|
||||
}
|
||||
Exec_Cmd("rm -rf \"" + mainPath + TW_DEFAULT_RECOVERY_FOLDER + '\"');
|
||||
}
|
||||
|
||||
return customPath;
|
||||
}
|
||||
|
||||
exit:
|
||||
return TW_DEFAULT_RECOVERY_FOLDER;
|
||||
}
|
||||
#endif // ndef BUILD_TWRPTAR_MAIN
|
||||
|
||||
@@ -119,6 +119,7 @@ public:
|
||||
static bool Set_Encryption_Policy(std::string path, const fscrypt_encryption_policy &policy); // set encryption policy for path
|
||||
static void List_Mounts();
|
||||
static void Clear_Bootloader_Message();
|
||||
static string Check_For_TwrpFolder();
|
||||
|
||||
private:
|
||||
static void Copy_Log(string Source, string Destination);
|
||||
|
||||
@@ -184,6 +184,7 @@ static void process_recovery_mode(twrpAdbBuFifo* adb_bu_fifo, bool skip_decrypti
|
||||
if (crash_counter == 0)
|
||||
TWFunc::Fixup_Time_On_Boot();
|
||||
|
||||
DataManager::LoadTWRPFolderInfo();
|
||||
DataManager::ReadSettingsFile();
|
||||
|
||||
// Run any outstanding OpenRecoveryScript
|
||||
|
||||
+4
-1
@@ -19,7 +19,9 @@
|
||||
|
||||
#define TW_MAIN_VERSION_STR "3.5.0_10"
|
||||
#define TW_VERSION_STR TW_MAIN_VERSION_STR TW_DEVICE_VERSION
|
||||
|
||||
#define TW_SETTINGS_FILE ".twrps"
|
||||
#define TW_RECOVERY_NAME "TWRP"
|
||||
#define TW_DEFAULT_RECOVERY_FOLDER "/" TW_RECOVERY_NAME
|
||||
#define TW_USE_COMPRESSION_VAR "tw_use_compression"
|
||||
#define TW_FILENAME "tw_filename"
|
||||
#define TW_ZIP_INDEX "tw_zip_index"
|
||||
@@ -78,6 +80,7 @@
|
||||
#define TW_RM_RF_VAR "tw_rm_rf"
|
||||
|
||||
#define TW_BACKUPS_FOLDER_VAR "tw_backups_folder"
|
||||
#define TW_RECOVERY_FOLDER_VAR "tw_recovery_folder"
|
||||
|
||||
#define TW_SDEXT_SIZE "tw_sdext_size"
|
||||
#define TW_SWAP_SIZE "tw_swap_size"
|
||||
|
||||
Reference in New Issue
Block a user