diff options
-rw-r--r-- | src/restore.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/restore.c b/src/restore.c index 361ccb6..ea93569 100644 --- a/src/restore.c +++ b/src/restore.c @@ -362,6 +362,23 @@ const char* restore_progress_string(unsigned int operation) { static int lastop = 0; +int restore_handle_previous_restore_log_msg(restored_client_t client, plist_t msg) { + plist_t node = NULL; + char* restorelog = NULL; + + node = plist_dict_get_item(msg, "PreviousRestoreLog"); + if (!node || plist_get_node_type(node) != PLIST_STRING) { + debug("Failed to parse restore log from PreviousRestoreLog plist\n"); + return -1; + } + plist_get_string_val(node, &restorelog); + + info("Previous Restore Log Received:\n%s\n", restorelog); + free(restorelog); + + return 0; +} + int restore_handle_progress_msg(restored_client_t client, plist_t msg) { plist_t node = NULL; uint64_t progress = 0; @@ -822,6 +839,11 @@ int restore_device(struct idevicerestore_client_t* client, plist_t build_identit error = restore_handle_data_request_msg(client, device, restore, message, build_identity, filesystem); } + // previous restore logs are available if a previous restore failed + else if (!strcmp(type, "PreviousRestoreLogMsg")) { + error = restore_handle_previous_restore_log_msg(restore, message); + } + // progress notification messages sent by the restored inform the client // of it's current operation and sometimes percent of progress is complete else if (!strcmp(type, "ProgressMsg")) { |