From 643b47f43e11ed59d674d943b913ad13c7cbaab1 Mon Sep 17 00:00:00 2001 From: Martin Szulecki Date: Fri, 19 Sep 2014 15:33:58 +0200 Subject: filerelaytest: Print clearer messages to the user and handle new iOS 8 error --- dev/filerelaytest.c | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/dev/filerelaytest.c b/dev/filerelaytest.c index f045620..1069711 100644 --- a/dev/filerelaytest.c +++ b/dev/filerelaytest.c @@ -32,24 +32,25 @@ int main(int argc, char **argv) lockdownd_client_t client = NULL; lockdownd_service_descriptor_t service = NULL; file_relay_client_t frc = NULL; + file_relay_error_t frc_error = FILE_RELAY_E_SUCCESS; idevice_connection_t dump = NULL; const char **sources; const char *default_sources[] = {"AppleSupport", "Network", "VPN", "WiFi", "UserDatabases", "CrashReporter", "tmp", "SystemConfiguration", NULL}; int i = 0; if (idevice_new(&dev, NULL) != IDEVICE_E_SUCCESS) { - printf("no device connected?!\n"); + printf("No device connected?!\n"); goto leave_cleanup; } - printf("connecting...\n"); + printf("Connecting...\n"); if (lockdownd_client_new_with_handshake(dev, &client, NULL) != LOCKDOWN_E_SUCCESS) { - printf("could not connect to lockdownd!\n"); + printf("Could not connect to lockdownd!\n"); goto leave_cleanup; } if (lockdownd_start_service(client, FILE_RELAY_SERVICE_NAME, &service) != LOCKDOWN_E_SUCCESS) { - printf("could not start file_relay service!\n"); + printf("Could not start file_relay service!\n"); goto leave_cleanup; } @@ -59,7 +60,7 @@ int main(int argc, char **argv) } if (file_relay_client_new(dev, service, &frc) != FILE_RELAY_E_SUCCESS) { - printf("could not connect to file_relay service!\n"); + printf("Could not connect to file_relay service!\n"); goto leave_cleanup; } @@ -80,21 +81,38 @@ int main(int argc, char **argv) sources = default_sources; } - printf("Requesting"); + printf("Requesting "); i = 0; while (sources[i]) { printf(" %s", sources[i]); i++; + if (sources[i]) + printf(","); } printf("\n"); - if (file_relay_request_sources(frc, sources, &dump) != FILE_RELAY_E_SUCCESS) { - printf("could not get sources\n"); + frc_error = file_relay_request_sources(frc, sources, &dump); + if (frc_error != FILE_RELAY_E_SUCCESS) { + printf("Could not request sources.\n"); + switch (frc_error) { + case FILE_RELAY_E_INVALID_SOURCE: + printf("At least one of the given sources is invalid and was rejected.\n"); + break; + case FILE_RELAY_E_STAGING_EMPTY: + printf("Staging is empty. Perhaps there is no data for the requested sources available.\n"); + break; + case FILE_RELAY_E_PERMISSION_DENIED: + printf("Permission denied by device. Possibly missing a signed preferences profile.\n"); + break; + default: + printf("An unknown error occoured.\n"); + break; + } goto leave_cleanup; } if (!dump) { - printf("did not get connection!\n"); + printf("Did not get connection!\n"); goto leave_cleanup; } @@ -107,7 +125,7 @@ int main(int argc, char **argv) return EXIT_FAILURE; } setbuf(stdout, NULL); - printf("receiving "); + printf("Receiving "); while (idevice_connection_receive(dump, buf, 4096, &len) == IDEVICE_E_SUCCESS) { fwrite(buf, 1, len, f); cnt += len; @@ -116,7 +134,7 @@ int main(int argc, char **argv) } printf("\n"); fclose(f); - printf("total size received: %d\n", cnt); + printf("Total size received: %d\n", cnt); leave_cleanup: if (frc) { -- cgit v1.1-32-gdbae