Fix some issues with wipe partition list
Change-Id: Ie7d5878faf86b8fa824b72211be7fd3596b471d7
diff --git a/gui/action.cpp b/gui/action.cpp
index 9bd5ce5..3e1f793 100644
--- a/gui/action.cpp
+++ b/gui/action.cpp
@@ -818,6 +818,13 @@
} else {
skip = true;
}
+ } else if (wipe_path == "INTERNAL") {
+ if (!PartitionManager.Wipe_Media_From_Data()) {
+ ret_val = false;
+ break;
+ } else {
+ skip = true;
+ }
}
if (!skip) {
if (!PartitionManager.Wipe_By_Path(wipe_path)) {
diff --git a/partition.cpp b/partition.cpp
index 7b687e7..f92d62f 100644
--- a/partition.cpp
+++ b/partition.cpp
@@ -480,7 +480,7 @@
Storage_Name = Display_Name;
if (!has_display_name && has_storage_name)
Display_Name = Storage_Name;
- if (has_display_name && !has_backup_name)
+ if (has_display_name && !has_backup_name && Backup_Display_Name != "Android Secure")
Backup_Display_Name = Display_Name;
if (!has_display_name && has_backup_name)
Display_Name = Backup_Display_Name;
@@ -1158,6 +1158,9 @@
return false;
Has_Data_Media = false;
+ Decrypted_Block_Device = "";
+ Is_Decrypted = false;
+ Is_Encrypted = false;
if (Wipe(Fstab_File_System)) {
Has_Data_Media = Save_Data_Media;
if (Has_Data_Media && !Symlink_Mount_Point.empty()) {
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index a78705b..d7f1600 100644
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -1191,6 +1191,9 @@
return -1;
if (dat->Has_Data_Media) {
dat->Recreate_Media_Folder();
+ // Unmount and remount - slightly hackish way to ensure that the "/sdcard" folder is still mounted properly after wiping
+ dat->UnMount(false);
+ dat->Mount(false);
}
return true;
} else {
@@ -1417,6 +1420,7 @@
dat->Is_Decrypted = true;
dat->Decrypted_Block_Device = crypto_blkdev;
dat->Setup_File_System(false);
+ dat->Current_File_System = dat->Fstab_File_System; // Needed if we're ignoring blkid because encrypted devices start out as emmc
gui_print("Data successfully decrypted, new block device: '%s'\n", crypto_blkdev);
#ifdef CRYPTO_SD_FS_TYPE
@@ -1848,6 +1852,13 @@
part.selected = 0;
Partition_List->push_back(part);
}
+ if ((*iter)->Has_Data_Media) {
+ struct PartitionList datamedia;
+ datamedia.Display_Name = (*iter)->Storage_Name;
+ datamedia.Mount_Point = "INTERNAL";
+ datamedia.selected = 0;
+ Partition_List->push_back(datamedia);
+ }
}
} else {
LOGERR("Unknown list type '%s' requested for TWPartitionManager::Get_Partition_List\n", ListType.c_str());