@@ -551,11 +551,21 @@ bool TWPartitionManager::Backup_Partition(PartitionSettings *part_settings) {
551
551
part_settings->Backup_FileName = part_settings->Part ->Backup_Name + " ." + part_settings->Part ->Current_File_System + " .win" ;
552
552
if (part_settings->Part ->Backup (part_settings, &tar_fork_pid)) {
553
553
bool md5Success = false ;
554
+ if (part_settings->adbbackup ) {
555
+ md5Success = true ;
556
+ }
557
+ else
558
+ md5Success = Make_MD5 (part_settings);
559
+
560
+ TWFunc::SetPerformanceMode (false );
554
561
if (part_settings->Part ->Has_SubPartition ) {
555
562
std::vector<TWPartition*>::iterator subpart;
563
+ TWPartition *parentPart = part_settings->Part ;
556
564
557
565
for (subpart = Partitions.begin (); subpart != Partitions.end (); subpart++) {
558
- if ((*subpart)->Can_Be_Backed_Up && (*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == part_settings->Part ->Mount_Point ) {
566
+ part_settings->Part = *subpart;
567
+ if ((*subpart)->Can_Be_Backed_Up && (*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == parentPart->Mount_Point ) {
568
+ part_settings->Backup_FileName = part_settings->Part ->Backup_Name + " ." + part_settings->Part ->Current_File_System + " .win" ;
559
569
if (!(*subpart)->Backup (part_settings, &tar_fork_pid)) {
560
570
TWFunc::SetPerformanceMode (false );
561
571
Clean_Backup_Folder (part_settings->Backup_Folder );
@@ -577,20 +587,14 @@ bool TWPartitionManager::Backup_Partition(PartitionSettings *part_settings) {
577
587
time (&stop);
578
588
int backup_time = (int ) difftime (stop, start);
579
589
LOGINFO (" Partition Backup time: %d\n " , backup_time);
590
+
580
591
if (part_settings->Part ->Backup_Method == BM_FILES) {
581
592
part_settings->file_time += backup_time;
582
593
} else {
583
594
part_settings->img_time += backup_time;
584
595
585
596
}
586
597
587
- if (part_settings->adbbackup ) {
588
- md5Success = true ;
589
- }
590
- else
591
- md5Success = Make_MD5 (part_settings);
592
- TWFunc::SetPerformanceMode (false );
593
-
594
598
return md5Success;
595
599
} else {
596
600
Clean_Backup_Folder (part_settings->Backup_Folder );
@@ -889,10 +893,12 @@ bool TWPartitionManager::Restore_Partition(PartitionSettings *part_settings) {
889
893
}
890
894
if (part_settings->Part ->Has_SubPartition ) {
891
895
std::vector<TWPartition*>::iterator subpart;
896
+ TWPartition *parentPart = part_settings->Part ;
892
897
893
898
for (subpart = Partitions.begin (); subpart != Partitions.end (); subpart++) {
894
-
895
- if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == part_settings->Part ->Mount_Point ) {
899
+ part_settings->Part = *subpart;
900
+ if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == parentPart->Mount_Point ) {
901
+ part_settings->Part = (*subpart);
896
902
if (!(*subpart)->Restore (part_settings)) {
897
903
TWFunc::SetPerformanceMode (false );
898
904
return false ;
@@ -953,16 +959,19 @@ int TWPartitionManager::Run_Restore(const string& Restore_Name) {
953
959
return false ;
954
960
}
955
961
956
- if (check_md5 > 0 && !part_settings.Part ->Check_MD5 (Restore_Name ))
962
+ if (check_md5 > 0 && !part_settings.Part ->Check_MD5 (&part_settings ))
957
963
return false ;
958
964
part_settings.partition_count ++;
959
965
part_settings.total_restore_size += part_settings.Part ->Get_Restore_Size (&part_settings);
960
966
if (part_settings.Part ->Has_SubPartition ) {
967
+ TWPartition *parentPart = part_settings.Part ;
961
968
std::vector<TWPartition*>::iterator subpart;
962
969
963
970
for (subpart = Partitions.begin (); subpart != Partitions.end (); subpart++) {
964
- if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == part_settings.Part ->Mount_Point ) {
965
- if (check_md5 > 0 && !(*subpart)->Check_MD5 (Restore_Name))
971
+ part_settings.Backup_FileName = parentPart->Backup_Name + " ." + parentPart->Current_File_System + " .win" ;
972
+ part_settings.Part = *subpart;
973
+ if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == parentPart->Mount_Point ) {
974
+ if (check_md5 > 0 && !(*subpart)->Check_MD5 (&part_settings))
966
975
return false ;
967
976
part_settings.total_restore_size += (*subpart)->Get_Restore_Size (&part_settings);
968
977
}
0 commit comments