diff options
| -rw-r--r-- | tools/iphonebackup.c | 39 |
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); |
