From e9b5eba30b3272361d846bc78b3bac6e9a8e2b40 Mon Sep 17 00:00:00 2001 From: Martin Szulecki Date: Tue, 26 Apr 2011 15:09:53 +0200 Subject: idevicebackup: Detect last file data hunk flag to prevent printing errors We have interpreted code 0x0b as CODE_ERROR_REMOTE and printed this error to the user which was disturbing. However, it is not an error but a flag which signals the end of a series of data hunks being sent. --- tools/idevicebackup4.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/idevicebackup4.c b/tools/idevicebackup4.c index 4235e08..d7adfc1 100644 --- a/tools/idevicebackup4.c +++ b/tools/idevicebackup4.c @@ -697,6 +697,7 @@ static int mb2_handle_receive_files(plist_t message, const char *backup_dir) char *fname = NULL; gchar *bname = NULL; char code = 0; + char last_code = 0; plist_t node = NULL; FILE *f = NULL; unsigned int file_count = 0; @@ -762,6 +763,7 @@ static int mb2_handle_receive_files(plist_t message, const char *backup_dir) break; } nlen = GUINT32_FROM_BE(nlen); + last_code = code; code = 0; mobilebackup2_receive_raw(mobilebackup2, &code, 1, &r); if (r != 1) { @@ -805,6 +807,7 @@ static int mb2_handle_receive_files(plist_t message, const char *backup_dir) mobilebackup2_receive_raw(mobilebackup2, (char*)&nlen, 4, &r); nlen = GUINT32_FROM_BE(nlen); if (nlen > 0) { + last_code = code; mobilebackup2_receive_raw(mobilebackup2, &code, 1, &r); } else { break; @@ -828,7 +831,10 @@ static int mb2_handle_receive_files(plist_t message, const char *backup_dir) char *msg = (char*)malloc(nlen); mobilebackup2_receive_raw(mobilebackup2, msg, nlen-1, &r); msg[r] = 0; - fprintf(stdout, "\nReceived an error message from device: %s\n", msg); + /* If sent using CODE_FILE_DATA, end marker will be CODE_ERROR_REMOTE which is not an error! */ + if (last_code != CODE_FILE_DATA) { + fprintf(stdout, "\nReceived an error message from device: %s\n", msg); + } free(msg); } } while (1); -- cgit v1.1-32-gdbae