From bf4efa39e4f710100c3087be5ecde014d089b1d8 Mon Sep 17 00:00:00 2001 From: Matt Mower Date: Mon, 14 Apr 2014 23:25:26 -0500 Subject: 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 --- partitionmanager.cpp | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'partitionmanager.cpp') diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 495ef9bb3..d4e371551 100644 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -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::iterator iter; -- cgit v1.2.3