Fix special partition handling
diff --git a/partitionmanager.cpp b/partitionmanager.cpp
index 9685072..a42c303 100644
--- a/partitionmanager.cpp
+++ b/partitionmanager.cpp
@@ -66,6 +66,7 @@
TWPartition* partition = new TWPartition();
string line = fstab_line;
+ memset(fstab_line, 0, sizeof(fstab_line));
if (partition->Process_Fstab_Line(line, Display_Error)) {
Partitions.push_back(partition);
@@ -646,7 +647,7 @@
#ifdef SP1_NAME
DataManager::GetValue(TW_BACKUP_SP1_VAR, check);
if (check) {
- backup_sp1 = Find_Partition_By_Path(SP1_NAME);
+ backup_sp1 = Find_Partition_By_Path(EXPAND(SP1_NAME));
if (backup_sp1 != NULL) {
partition_count++;
if (backup_sp1->Backup_Method == 1)
@@ -654,7 +655,7 @@
else
img_bytes += backup_sp1->Backup_Size;
} else {
- LOGE("Unable to locate %s partition.\n", SP1_NAME);
+ LOGE("Unable to locate %s partition.\n", EXPAND(SP1_NAME));
return false;
}
}
@@ -662,7 +663,7 @@
#ifdef SP2_NAME
DataManager::GetValue(TW_BACKUP_SP2_VAR, check);
if (check) {
- backup_sp2 = Find_Partition_By_Path(SP2_NAME);
+ backup_sp2 = Find_Partition_By_Path(EXPAND(SP2_NAME));
if (backup_sp2 != NULL) {
partition_count++;
if (backup_sp2->Backup_Method == 1)
@@ -670,7 +671,7 @@
else
img_bytes += backup_sp2->Backup_Size;
} else {
- LOGE("Unable to locate %s partition.\n", SP2_NAME);
+ LOGE("Unable to locate %s partition.\n", EXPAND(SP2_NAME));
return false;
}
}
@@ -678,7 +679,7 @@
#ifdef SP3_NAME
DataManager::GetValue(TW_BACKUP_SP3_VAR, check);
if (check) {
- backup_sp3 = Find_Partition_By_Path(SP3_NAME);
+ backup_sp3 = Find_Partition_By_Path(EXPAND(SP3_NAME));
if (backup_sp3 != NULL) {
partition_count++;
if (backup_sp3->Backup_Method == 1)
@@ -686,7 +687,7 @@
else
img_bytes += backup_sp3->Backup_Size;
} else {
- LOGE("Unable to locate %s partition.\n", SP3_NAME);
+ LOGE("Unable to locate %s partition.\n", EXPAND(SP3_NAME));
return false;
}
}
@@ -856,9 +857,9 @@
#ifdef SP1_NAME
DataManager::GetValue(TW_RESTORE_SP1_VAR, check);
if (check > 0) {
- restore_sp1 = Find_Partition_By_Path(SP1_NAME);
+ restore_sp1 = Find_Partition_By_Path(EXPAND(SP1_NAME));
if (restore_sp1 == NULL) {
- LOGE("Unable to locate %s partition.\n", SP1_NAME);
+ LOGE("Unable to locate %s partition.\n", EXPAND(SP1_NAME));
return false;
}
partition_count++;
@@ -867,9 +868,9 @@
#ifdef SP2_NAME
DataManager::GetValue(TW_RESTORE_SP2_VAR, check);
if (check > 0) {
- restore_sp2 = Find_Partition_By_Path(SP2_NAME);
+ restore_sp2 = Find_Partition_By_Path(EXPAND(SP2_NAME));
if (restore_sp2 == NULL) {
- LOGE("Unable to locate %s partition.\n", SP2_NAME);
+ LOGE("Unable to locate %s partition.\n", EXPAND(SP2_NAME));
return false;
}
partition_count++;
@@ -878,9 +879,9 @@
#ifdef SP3_NAME
DataManager::GetValue(TW_RESTORE_SP3_VAR, check);
if (check > 0) {
- restore_sp3 = Find_Partition_By_Path(SP3_NAME);
+ restore_sp3 = Find_Partition_By_Path(EXPAND(SP3_NAME));
if (restore_sp3 == NULL) {
- LOGE("Unable to locate %s partition.\n", SP3_NAME);
+ LOGE("Unable to locate %s partition.\n", EXPAND(SP3_NAME));
return false;
}
partition_count++;
@@ -1049,15 +1050,15 @@
if (Part->Backup_Path == "/sd-ext")
tw_restore_sdext = 1;
#ifdef SP1_NAME
- if (Part->Backup_Path == TWFunc::Get_Root_Path(SP1_Name))
+ if (Part->Backup_Path == TWFunc::Get_Root_Path(EXPAND(SP1_NAME)))
tw_restore_sp1 = 1;
#endif
#ifdef SP2_NAME
- if (Part->Backup_Path == TWFunc::Get_Root_Path(SP2_Name))
+ if (Part->Backup_Path == TWFunc::Get_Root_Path(EXPAND(SP2_NAME)))
tw_restore_sp2 = 1;
#endif
#ifdef SP3_NAME
- if (Part->Backup_Path == TWFunc::Get_Root_Path(SP3_Name))
+ if (Part->Backup_Path == TWFunc::Get_Root_Path(EXPAND(SP3_NAME)))
tw_restore_sp3 = 1;
#endif
}
@@ -1288,6 +1289,24 @@
} else
DataManager::SetValue(TW_HAS_ANDROID_SECURE, 1);
}
+#ifdef SP1_NAME
+ if ((*iter)->Backup_Name == EXPAND(SP1_NAME)) {
+ int backup_display_size = (int)((*iter)->Backup_Size / 1048576LLU);
+ DataManager::SetValue(TW_BACKUP_SP1_SIZE, backup_display_size);
+ }
+#endif
+#ifdef SP2_NAME
+ if ((*iter)->Backup_Name == EXPAND(SP2_NAME)) {
+ int backup_display_size = (int)((*iter)->Backup_Size / 1048576LLU);
+ DataManager::SetValue(TW_BACKUP_SP2_SIZE, backup_display_size);
+ }
+#endif
+#ifdef SP3_NAME
+ if ((*iter)->Backup_Name == EXPAND(SP3_NAME)) {
+ int backup_display_size = (int)((*iter)->Backup_Size / 1048576LLU);
+ DataManager::SetValue(TW_BACKUP_SP3_SIZE, backup_display_size);
+ }
+#endif
}
}
DataManager::SetValue(TW_BACKUP_DATA_SIZE, data_size);
@@ -1302,8 +1321,10 @@
if (has_dual_storage == 1) {
// We have dual storage, see if we're using the internal storage that should always be present
if (current_storage_path == DataManager::GetSettingsStoragePath()) {
- // Not able to use internal, so error!
- LOGE("Unable to mount internal storage.\n");
+ if (!FreeStorage->Is_Encrypted) {
+ // Not able to use internal, so error!
+ LOGE("Unable to mount internal storage.\n");
+ }
DataManager::SetValue(TW_STORAGE_FREE_SIZE, 0);
} else {
// We were using external, flip to internal