diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/idevicebackup.c | 8 | 
1 files changed, 5 insertions, 3 deletions
| diff --git a/tools/idevicebackup.c b/tools/idevicebackup.c index a8b37d9..1eb12b0 100644 --- a/tools/idevicebackup.c +++ b/tools/idevicebackup.c @@ -690,7 +690,7 @@ int main(int argc, char *argv[])  				node_tmp = plist_array_get_item(message, 2);  				/* first message hunk contains total backup size */ -				if (hunk_index == 0) { +				if ((hunk_index == 0) && (file_index == 0)) {  					node = plist_dict_get_item(node_tmp, "BackupTotalSizeKey");  					if (node) {  						plist_get_uint_val(node, &backup_total_size); @@ -747,7 +747,7 @@ int main(int argc, char *argv[])  						filename_mdinfo = mobilebackup_build_path(backup_directory, file_path, ".mdinfo");  						/* remove any existing file */ -						if (stat(filename_mdinfo, &st) != 0) +						if (stat(filename_mdinfo, &st) == 0)  							remove(filename_mdinfo);  						node = plist_dict_get_item(node_tmp, "BackupFileInfo"); @@ -768,7 +768,7 @@ int main(int argc, char *argv[])  					filename_mddata = mobilebackup_build_path(backup_directory, file_path, is_manifest ? NULL: ".mddata");  					/* if this is the first hunk, remove any existing file */ -					if (stat(filename_mddata, &st) != 0) +					if ((hunk_index == 0) && (stat(filename_mddata, &st) == 0))  						remove(filename_mddata);  					/* get file data hunk */ @@ -803,6 +803,8 @@ int main(int argc, char *argv[])  					/* acknowlegdge that we received the file */  					mobilebackup_send_backup_file_received(mobilebackup); +					/* reset hunk_index */ +					hunk_index = 0;  				}  				if (quit_flag > 0) { | 
