summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libimobiledevice/mobilesync.h2
-rw-r--r--src/mobilesync.c22
2 files changed, 16 insertions, 8 deletions
diff --git a/include/libimobiledevice/mobilesync.h b/include/libimobiledevice/mobilesync.h
index 2cd6d30..7658b7d 100644
--- a/include/libimobiledevice/mobilesync.h
+++ b/include/libimobiledevice/mobilesync.h
@@ -78,7 +78,7 @@ mobilesync_error_t mobilesync_finish(mobilesync_client_t client);
mobilesync_error_t mobilesync_get_all_records_from_device(mobilesync_client_t client);
mobilesync_error_t mobilesync_get_changes_from_device(mobilesync_client_t client);
-mobilesync_error_t mobilesync_clear_all_records_on_device(mobilesync_client_t client, const char *data_class);
+mobilesync_error_t mobilesync_clear_all_records_on_device(mobilesync_client_t client);
mobilesync_error_t mobilesync_receive_changes(mobilesync_client_t client, plist_t *entities, uint8_t *is_last_record, plist_t *actions);
mobilesync_error_t mobilesync_acknowledge_changes_from_device(mobilesync_client_t client);
diff --git a/src/mobilesync.c b/src/mobilesync.c
index 475e46c..7f20e16 100644
--- a/src/mobilesync.c
+++ b/src/mobilesync.c
@@ -516,18 +516,17 @@ mobilesync_error_t mobilesync_receive_changes(mobilesync_client_t client, plist_
}
/**
- * Requests the device to delete all records of the supplied data class
+ * Requests the device to delete all records of the current data class
*
- * @note The operation must be called outside of the regular synchronization loop.
+ * @note The operation must be called after starting synchronization.
*
* @param client The mobilesync client
- * @param data_class The data class identifier
*
* @retval MOBILESYNC_E_SUCCESS on success
* @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid
* @retval MOBILESYNC_E_PLIST_ERROR if the received plist is not of valid form
*/
-mobilesync_error_t mobilesync_clear_all_records_on_device(mobilesync_client_t client, const char *data_class)
+mobilesync_error_t mobilesync_clear_all_records_on_device(mobilesync_client_t client)
{
if (!client || !client->data_class) {
return MOBILESYNC_E_INVALID_ARG;
@@ -540,7 +539,7 @@ mobilesync_error_t mobilesync_clear_all_records_on_device(mobilesync_client_t cl
msg = plist_new_array();
plist_array_append_item(msg, plist_new_string("SDMessageClearAllRecordsOnDevice"));
- plist_array_append_item(msg, plist_new_string(data_class));
+ plist_array_append_item(msg, plist_new_string(client->data_class));
plist_array_append_item(msg, plist_new_string(EMPTY_PARAMETER_STRING));
err = mobilesync_send(client, msg);
@@ -570,8 +569,17 @@ mobilesync_error_t mobilesync_clear_all_records_on_device(mobilesync_client_t cl
goto out;
}
- if (!strcmp(response_type, "SDMessageDeviceWillClearAllRecords")) {
- err = MOBILESYNC_E_SUCCESS;
+ if (!strcmp(response_type, "SDMessageCancelSession")) {
+ char *reason = NULL;
+ err = MOBILESYNC_E_CANCELLED;
+ plist_get_string_val(plist_array_get_item(msg, 2), &reason);
+ debug_info("Device cancelled: %s", reason);
+ free(reason);
+ goto out;
+ }
+
+ if (strcmp(response_type, "SDMessageDeviceWillClearAllRecords")) {
+ err = MOBILESYNC_E_PLIST_ERROR;
}
out: