diff options
| -rw-r--r-- | include/libimobiledevice/mobilesync.h | 2 | ||||
| -rw-r--r-- | src/mobilesync.c | 22 | 
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: | 
