summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/iphonebackup.c39
1 files changed, 27 insertions, 12 deletions
diff --git a/tools/iphonebackup.c b/tools/iphonebackup.c
index 927d195..f7be8ca 100644
--- a/tools/iphonebackup.c
+++ b/tools/iphonebackup.c
@@ -432,6 +432,7 @@ int main(int argc, char *argv[])
432 char *filename_mddata = NULL; 432 char *filename_mddata = NULL;
433 char *filename_source = NULL; 433 char *filename_source = NULL;
434 char *format_size = NULL; 434 char *format_size = NULL;
435 gboolean is_manifest = FALSE;
435 do { 436 do {
436 mobilebackup_receive(mobilebackup, &message); 437 mobilebackup_receive(mobilebackup, &message);
437 node = plist_array_get_item(message, 0); 438 node = plist_array_get_item(message, 0);
@@ -452,23 +453,33 @@ int main(int argc, char *argv[])
452 /* print out "received" if DLFileStatusKey is 2 (last file piece) */ 453 /* print out "received" if DLFileStatusKey is 2 (last file piece) */
453 node = plist_dict_get_item(node_tmp, "DLFileStatusKey"); 454 node = plist_dict_get_item(node_tmp, "DLFileStatusKey");
454 plist_get_uint_val(node, &c); 455 plist_get_uint_val(node, &c);
456
457 /* get source filename */
458 node = plist_dict_get_item(node_tmp, "DLFileSource");
459 plist_get_string_val(node, &filename_source);
460
461 if (!strcmp(filename_source, "/tmp/Manifest.plist"))
462 is_manifest = TRUE;
463 else
464 is_manifest = FALSE;
465
455 if (c == 2) { 466 if (c == 2) {
456 node = plist_dict_get_item(node_tmp, "DLFileAttributesKey"); 467 node = plist_dict_get_item(node_tmp, "DLFileAttributesKey");
457 node = plist_dict_get_item(node, "FileSize"); 468 node = plist_dict_get_item(node, "FileSize");
458 plist_get_uint_val(node, &length); 469 plist_get_uint_val(node, &length);
470
471 /* increased received size for each completed file */
459 backup_real_size += length; 472 backup_real_size += length;
460 format_size = g_format_size_for_display(backup_real_size);
461 printf("(%s", format_size);
462 g_free(format_size);
463 format_size = g_format_size_for_display(backup_total_size);
464 printf("/%s): ", format_size);
465 g_free(format_size);
466 473
467 /* get source filename and print it */ 474 if (!is_manifest) {
468 node = plist_dict_get_item(node_tmp, "DLFileSource"); 475 format_size = g_format_size_for_display(backup_real_size);
469 plist_get_string_val(node, &filename_source); 476 printf("(%s", format_size);
470 printf("Received file %s... ", filename_source); 477 g_free(format_size);
471 free(filename_source); 478 format_size = g_format_size_for_display(backup_total_size);
479 printf("/%s): ", format_size);
480 g_free(format_size);
481 printf("Received file %s... ", filename_source);
482 }
472 } 483 }
473 484
474 /* save <hash>.mdinfo */ 485 /* save <hash>.mdinfo */
@@ -499,8 +510,12 @@ int main(int argc, char *argv[])
499 g_free(filename_mddata); 510 g_free(filename_mddata);
500 } 511 }
501 512
502 if (c == 2) 513 if ((c == 2) && (!is_manifest)) {
503 printf("DONE\n"); 514 printf("DONE\n");
515 }
516
517 if (filename_source)
518 free(filename_source);
504 519
505 if (file_ext) 520 if (file_ext)
506 free(file_ext); 521 free(file_ext);