From aa25d87ae9b166919cf2ac273e673ac35333accc Mon Sep 17 00:00:00 2001
From: Nikias Bassen
Date: Mon, 12 Jul 2010 11:30:12 +0200
Subject: sbservices: allow passing formatVersion when requesting icon state

---
 include/libimobiledevice/sbservices.h | 2 +-
 src/sbservices.c                      | 9 ++++++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/include/libimobiledevice/sbservices.h b/include/libimobiledevice/sbservices.h
index 4274278..616168e 100644
--- a/include/libimobiledevice/sbservices.h
+++ b/include/libimobiledevice/sbservices.h
@@ -48,7 +48,7 @@ typedef sbservices_client_private *sbservices_client_t; /**< The client handle.
 /* Interface */
 sbservices_error_t sbservices_client_new(idevice_t device, uint16_t port, sbservices_client_t *client);
 sbservices_error_t sbservices_client_free(sbservices_client_t client);
-sbservices_error_t sbservices_get_icon_state(sbservices_client_t client, plist_t *state);
+sbservices_error_t sbservices_get_icon_state(sbservices_client_t client, plist_t *state, const char *format_version);
 sbservices_error_t sbservices_set_icon_state(sbservices_client_t client, plist_t newstate);
 sbservices_error_t sbservices_get_icon_pngdata(sbservices_client_t client, const char *bundleId, char **pngdata, uint64_t *pngsize);
 sbservices_error_t sbservices_get_home_screen_wallpaper_pngdata(sbservices_client_t client, char **pngdata, uint64_t *pngsize);
diff --git a/src/sbservices.c b/src/sbservices.c
index e6342d1..3596cbd 100644
--- a/src/sbservices.c
+++ b/src/sbservices.c
@@ -140,11 +140,15 @@ sbservices_error_t sbservices_client_free(sbservices_client_t client)
  * @param client The connected sbservices client to use.
  * @param state Pointer that will point to a newly allocated plist containing
  *     the current icon state. It is up to the caller to free the memory.
+ * @param format_version A string to be passed as formatVersion along with
+ *     the request, or NULL if no formatVersion should be passed. This is only
+ *     supported since iOS 4.0 so for older firmware versions this must be set
+ *     to NULL.
  *
  * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when
  *     client or state is invalid, or an SBSERVICES_E_* error code otherwise.
  */
-sbservices_error_t sbservices_get_icon_state(sbservices_client_t client, plist_t *state)
+sbservices_error_t sbservices_get_icon_state(sbservices_client_t client, plist_t *state, const char *format_version)
 {
 	if (!client || !client->parent || !state)
 		return SBSERVICES_E_INVALID_ARG;
@@ -153,6 +157,9 @@ sbservices_error_t sbservices_get_icon_state(sbservices_client_t client, plist_t
 
 	plist_t dict = plist_new_dict();
 	plist_dict_insert_item(dict, "command", plist_new_string("getIconState"));
+	if (format_version) {
+		plist_dict_insert_item(dict, "formatVersion", plist_new_string(format_version));
+	}
 
 	sbs_lock(client);
 
-- 
cgit v1.1-32-gdbae