summaryrefslogtreecommitdiffstats
path: root/src/restore.c
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2019-09-25 19:29:28 +0200
committerGravatar Nikias Bassen2019-09-25 19:29:28 +0200
commitacf0a76be3c81a8ce69817af2b16a546a08f7ecb (patch)
tree5dccd332d1c3e8a0fdd02bd14703ee0c53f14d91 /src/restore.c
parenta9e69b1252e5918b6d8ada1209ccefde301cfa26 (diff)
downloadlibimobiledevice-acf0a76be3c81a8ce69817af2b16a546a08f7ecb.tar.gz
libimobiledevice-acf0a76be3c81a8ce69817af2b16a546a08f7ecb.tar.bz2
restore: Update error codes and properly convert underlying property_list_service errors
Diffstat (limited to 'src/restore.c')
-rw-r--r--src/restore.c52
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);