Support alternative .android_secure location
Some devices (jewel, m8) have .android_secure at a non-standard location. Allow a different partition to be specified as the home of .android_secure using the fstab flag 'andsec'. Using the /data/media variant of jewel as an example, recovery.fstab or twrp.fstab could be edited like follows: /external_sd vfat /dev/block/mmcblk1p1 flags=display="MicroSD";andsec Note, this is NOT a method to move .android_secure in your ROM. Your ROM must already write to this alternative location. Change-Id: I3a6e4e63aaddb35870b79e80938b0f9c2c902443
This commit is contained in:
committed by
Gerrit Code Review
parent
0251abc485
commit
bf4efa39e4
@@ -703,7 +703,10 @@
|
||||
<placement x="%col1_x%" y="525" />
|
||||
<font resource="font" color="white" />
|
||||
<text>.android_secure</text>
|
||||
<condition var1="fileexists" var2="/sdcard/.android_secure" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<data variable="tw_backup_andsec" />
|
||||
<image checked="checkbox_true" unchecked="checkbox_false" />
|
||||
</object>
|
||||
|
||||
@@ -1394,7 +1394,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1394,7 +1394,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1116,7 +1116,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1119,7 +1119,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1394,7 +1394,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1121,7 +1121,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1394,7 +1394,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1086,7 +1086,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1394,7 +1394,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1103,7 +1103,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1103,7 +1103,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1102,7 +1102,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1103,7 +1103,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1116,7 +1116,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1104,7 +1104,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row3_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -1402,7 +1402,10 @@
|
||||
</object>
|
||||
|
||||
<object type="text" color="%text_color%">
|
||||
<condition var1="tw_has_data_media" var2="0" />
|
||||
<conditions>
|
||||
<condition var1="tw_has_android_secure" var2="1" />
|
||||
<condition var1="fileexists" var2="/and-sec" />
|
||||
</conditions>
|
||||
<font resource="font" />
|
||||
<placement x="%center_x%" y="%row2_text_y%" placement="5" />
|
||||
<text>.android_secure</text>
|
||||
|
||||
@@ -507,6 +507,8 @@ bool TWPartition::Process_Flags(string Flags, bool Display_Error) {
|
||||
}
|
||||
} else if (strcmp(ptr, "settingsstorage") == 0) {
|
||||
Is_Storage = true;
|
||||
} else if (strcmp(ptr, "andsec") == 0) {
|
||||
Has_Android_Secure = true;
|
||||
} else if (strcmp(ptr, "canbewiped") == 0) {
|
||||
Can_Be_Wiped = true;
|
||||
} else if (strcmp(ptr, "usermrf") == 0) {
|
||||
|
||||
@@ -57,6 +57,7 @@ int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error)
|
||||
FILE *fstabFile;
|
||||
char fstab_line[MAX_FSTAB_LINE_LENGTH];
|
||||
TWPartition* settings_partition = NULL;
|
||||
TWPartition* andsec_partition = NULL;
|
||||
|
||||
fstabFile = fopen(Fstab_Filename.c_str(), "rt");
|
||||
if (fstabFile == NULL) {
|
||||
@@ -81,6 +82,11 @@ int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error)
|
||||
} else {
|
||||
partition->Is_Settings_Storage = false;
|
||||
}
|
||||
if (!andsec_partition && partition->Has_Android_Secure) {
|
||||
andsec_partition = partition;
|
||||
} else {
|
||||
partition->Has_Android_Secure = false;
|
||||
}
|
||||
Partitions.push_back(partition);
|
||||
} else {
|
||||
delete partition;
|
||||
@@ -104,6 +110,11 @@ int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error)
|
||||
else
|
||||
LOGINFO("Error creating fstab\n");
|
||||
}
|
||||
if (andsec_partition) {
|
||||
Setup_Android_Secure_Location(andsec_partition);
|
||||
} else {
|
||||
Setup_Android_Secure_Location(settings_partition);
|
||||
}
|
||||
Setup_Settings_Storage_Partition(settings_partition);
|
||||
Update_System_Details();
|
||||
UnMount_Main_Partitions();
|
||||
@@ -139,14 +150,20 @@ int TWPartitionManager::Write_Fstab(void) {
|
||||
}
|
||||
|
||||
void TWPartitionManager::Setup_Settings_Storage_Partition(TWPartition* Part) {
|
||||
#ifndef RECOVERY_SDCARD_ON_DATA
|
||||
Part->Setup_AndSec();
|
||||
#endif
|
||||
DataManager::SetValue("tw_settings_path", Part->Storage_Path);
|
||||
DataManager::SetValue("tw_storage_path", Part->Storage_Path);
|
||||
LOGINFO("Settings storage is '%s'\n", Part->Storage_Path.c_str());
|
||||
}
|
||||
|
||||
void TWPartitionManager::Setup_Android_Secure_Location(TWPartition* Part) {
|
||||
if (Part->Has_Android_Secure)
|
||||
Part->Setup_AndSec();
|
||||
#ifndef RECOVERY_SDCARD_ON_DATA
|
||||
else
|
||||
Part->Setup_AndSec();
|
||||
#endif
|
||||
}
|
||||
|
||||
void TWPartitionManager::Output_Partition_Logging(void) {
|
||||
std::vector<TWPartition*>::iterator iter;
|
||||
|
||||
|
||||
@@ -213,7 +213,8 @@ public:
|
||||
void Output_Storage_Fstab(); // Creates a /cache/recovery/storage.fstab file with a list of all potential storage locations for app use
|
||||
|
||||
private:
|
||||
void Setup_Settings_Storage_Partition(TWPartition* Part); // Sets things up for the storage partition
|
||||
void Setup_Settings_Storage_Partition(TWPartition* Part); // Sets up settings storage
|
||||
void Setup_Android_Secure_Location(TWPartition* Part); // Sets up .android_secure if needed
|
||||
bool Make_MD5(bool generate_md5, string Backup_Folder, string Backup_Filename); // Generates an MD5 after a backup is made
|
||||
bool Backup_Partition(TWPartition* Part, string Backup_Folder, bool generate_md5, unsigned long long* img_bytes_remaining, unsigned long long* file_bytes_remaining, unsigned long *img_time, unsigned long *file_time, unsigned long long *img_bytes, unsigned long long *file_bytes);
|
||||
bool Restore_Partition(TWPartition* Part, string Restore_Name, int partition_count);
|
||||
|
||||
Reference in New Issue
Block a user