diff options
author | Nikias Bassen | 2019-09-25 19:29:28 +0200 |
---|---|---|
committer | Nikias Bassen | 2019-09-25 19:29:28 +0200 |
commit | acf0a76be3c81a8ce69817af2b16a546a08f7ecb (patch) | |
tree | 5dccd332d1c3e8a0fdd02bd14703ee0c53f14d91 /src | |
parent | a9e69b1252e5918b6d8ada1209ccefde301cfa26 (diff) | |
download | libimobiledevice-acf0a76be3c81a8ce69817af2b16a546a08f7ecb.tar.gz libimobiledevice-acf0a76be3c81a8ce69817af2b16a546a08f7ecb.tar.bz2 |
restore: Update error codes and properly convert underlying property_list_service errors
Diffstat (limited to 'src')
-rw-r--r-- | src/restore.c | 52 |
1 files changed, 26 insertions, 26 deletions
diff --git a/src/restore.c b/src/restore.c index 6571a2f..0a13698 100644 --- a/src/restore.c +++ b/src/restore.c @@ -89,6 +89,25 @@ static void plist_dict_add_label(plist_t plist, const char *label) } } +static restored_error_t restored_error(property_list_service_error_t err) +{ + switch (err) { + case PROPERTY_LIST_SERVICE_E_SUCCESS: + return RESTORE_E_SUCCESS; + case PROPERTY_LIST_SERVICE_E_INVALID_ARG: + return RESTORE_E_INVALID_ARG; + case PROPERTY_LIST_SERVICE_E_PLIST_ERROR: + return RESTORE_E_PLIST_ERROR; + case PROPERTY_LIST_SERVICE_E_MUX_ERROR: + return RESTORE_E_MUX_ERROR; + case PROPERTY_LIST_SERVICE_E_RECEIVE_TIMEOUT: + return RESTORE_E_RECEIVE_TIMEOUT; + default: + break; + } + return RESTORE_E_UNKNOWN_ERROR; +} + LIBIMOBILEDEVICE_API restored_error_t restored_client_free(restored_client_t client) { if (!client) @@ -99,9 +118,7 @@ LIBIMOBILEDEVICE_API restored_error_t restored_client_free(restored_client_t cli if (client->parent) { restored_goodbye(client); - if (property_list_service_client_free(client->parent) == PROPERTY_LIST_SERVICE_E_SUCCESS) { - ret = RESTORE_E_SUCCESS; - } + ret = restored_error(property_list_service_client_free(client->parent)); } if (client->udid) { @@ -134,18 +151,7 @@ LIBIMOBILEDEVICE_API restored_error_t restored_receive(restored_client_t client, if (!client || !plist || (plist && *plist)) return RESTORE_E_INVALID_ARG; - restored_error_t ret = RESTORE_E_SUCCESS; - property_list_service_error_t err; - - err = property_list_service_receive_plist(client->parent, plist); - if (err != PROPERTY_LIST_SERVICE_E_SUCCESS) { - ret = RESTORE_E_UNKNOWN_ERROR; - } - - if (!*plist) - ret = RESTORE_E_PLIST_ERROR; - - return ret; + return restored_error(property_list_service_receive_plist(client->parent, plist)); } LIBIMOBILEDEVICE_API restored_error_t restored_send(restored_client_t client, plist_t plist) @@ -153,14 +159,7 @@ LIBIMOBILEDEVICE_API restored_error_t restored_send(restored_client_t client, pl if (!client || !plist) return RESTORE_E_INVALID_ARG; - restored_error_t ret = RESTORE_E_SUCCESS; - property_list_service_error_t err; - - err = property_list_service_send_xml_plist(client->parent, plist); - if (err != PROPERTY_LIST_SERVICE_E_SUCCESS) { - ret = RESTORE_E_UNKNOWN_ERROR; - } - return ret; + return restored_error(property_list_service_send_xml_plist(client->parent, plist)); } LIBIMOBILEDEVICE_API restored_error_t restored_query_type(restored_client_t client, char **type, uint64_t *version) @@ -305,9 +304,10 @@ LIBIMOBILEDEVICE_API restored_error_t restored_client_new(idevice_t device, rest }; property_list_service_client_t plistclient = NULL; - if (property_list_service_client_new(device, (lockdownd_service_descriptor_t)&service, &plistclient) != PROPERTY_LIST_SERVICE_E_SUCCESS) { + ret = restored_error(property_list_service_client_new(device, (lockdownd_service_descriptor_t)&service, &plistclient)); + if (ret != RESTORE_E_SUCCESS) { debug_info("could not connect to restored (device %s)", device->udid); - return RESTORE_E_MUX_ERROR; + return ret; } restored_client_t client_loc = (restored_client_t) malloc(sizeof(struct restored_client_private)); @@ -321,7 +321,7 @@ LIBIMOBILEDEVICE_API restored_error_t restored_client_new(idevice_t device, rest idev_ret = idevice_get_udid(device, &client_loc->udid); if (IDEVICE_E_SUCCESS != idev_ret) { debug_info("failed to get device udid."); - ret = RESTORE_E_DEVICE_ERROR; + ret = RESTORE_E_UNKNOWN_ERROR; } debug_info("device udid: %s", client_loc->udid); |