summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGary Peck <gary@realify.com>2012-11-22 01:23:12 +0100
committerGary Peck <gary@realify.com>2012-12-21 15:59:41 +0100
commit82599a87ee93544d33b4c1927df45b9c20d7db41 (patch)
treecc0ce12dc2d7689d7419c49ae54f47af7260cbb9
parentReset partition flags when the partition is wiped (diff)
downloadandroid_bootable_recovery-82599a87ee93544d33b4c1927df45b9c20d7db41.tar
android_bootable_recovery-82599a87ee93544d33b4c1927df45b9c20d7db41.tar.gz
android_bootable_recovery-82599a87ee93544d33b4c1927df45b9c20d7db41.tar.bz2
android_bootable_recovery-82599a87ee93544d33b4c1927df45b9c20d7db41.tar.lz
android_bootable_recovery-82599a87ee93544d33b4c1927df45b9c20d7db41.tar.xz
android_bootable_recovery-82599a87ee93544d33b4c1927df45b9c20d7db41.tar.zst
android_bootable_recovery-82599a87ee93544d33b4c1927df45b9c20d7db41.zip
-rw-r--r--partition.cpp19
-rw-r--r--partitionmanager.cpp3
2 files changed, 18 insertions, 4 deletions
diff --git a/partition.cpp b/partition.cpp
index 145fb14bc..f5173b13d 100644
--- a/partition.cpp
+++ b/partition.cpp
@@ -214,9 +214,17 @@ bool TWPartition::Process_Fstab_Line(string Line, bool Display_Error) {
} else if (!Mount(false)) {
Is_Encrypted = true;
Is_Decrypted = false;
+ Can_Be_Mounted = false;
+ Current_File_System = "emmc";
+ Setup_Image(Display_Error);
DataManager::SetValue(TW_IS_ENCRYPTED, 1);
DataManager::SetValue(TW_CRYPTO_PASSWORD, "");
DataManager::SetValue("tw_crypto_display", "");
+ } else {
+ // Filesystem is not encrypted and the mount
+ // succeeded, so get it back to the original
+ // unmounted state
+ UnMount(false);
}
#ifdef RECOVERY_SDCARD_ON_DATA
if (!Is_Encrypted || (Is_Encrypted && Is_Decrypted))
@@ -414,12 +422,12 @@ void TWPartition::Setup_File_System(bool Display_Error) {
void TWPartition::Setup_Image(bool Display_Error) {
Display_Name = Mount_Point.substr(1, Mount_Point.size() - 1);
Backup_Name = Display_Name;
- if (Fstab_File_System == "emmc")
+ if (Current_File_System == "emmc")
Backup_Method = DD;
- else if (Fstab_File_System == "mtd" || Fstab_File_System == "bml")
+ else if (Current_File_System == "mtd" || Current_File_System == "bml")
Backup_Method = FLASH_UTILS;
else
- LOGI("Unhandled file system '%s' on image '%s'\n", Fstab_File_System.c_str(), Display_Name.c_str());
+ LOGI("Unhandled file system '%s' on image '%s'\n", Current_File_System.c_str(), Display_Name.c_str());
if (Find_Partition_Size()) {
Used = Size;
Backup_Size = Size;
@@ -768,7 +776,10 @@ bool TWPartition::Wipe(string New_File_System) {
}
bool TWPartition::Wipe() {
- return Wipe(Current_File_System);
+ if (Is_File_System(Current_File_System))
+ return Wipe(Current_File_System);
+ else
+ return Wipe(Fstab_File_System);
}
bool TWPartition::Wipe_AndSec(void) {
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index 536e86780..95f010093 100644
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -1483,6 +1483,8 @@ void TWPartitionManager::Update_System_Details(void) {
DataManager::SetValue(TW_BACKUP_RECOVERY_VAR, 0);
} else
DataManager::SetValue(TW_HAS_RECOVERY_PARTITION, 1);
+ } else if ((*iter)->Mount_Point == "/data") {
+ data_size += (int)((*iter)->Backup_Size / 1048576LLU);
}
#ifdef SP1_NAME
if ((*iter)->Backup_Name == EXPAND(SP1_NAME)) {
@@ -1581,6 +1583,7 @@ int TWPartitionManager::Decrypt_Device(string Password) {
DataManager::SetValue(TW_IS_DECRYPTED, 1);
dat->Is_Decrypted = true;
dat->Decrypted_Block_Device = crypto_blkdev;
+ dat->Setup_File_System(false);
ui_print("Data successfully decrypted, new block device: '%s'\n", crypto_blkdev);
// Sleep for a bit so that the device will be ready
sleep(1);