From 80d83ce120fc0af69ef61abfeea96604c0190cad Mon Sep 17 00:00:00 2001 From: Ondrej Holy Date: Tue, 11 Jun 2013 13:33:23 +0200 Subject: afc: Update to libimobiledevice new api https://bugzilla.redhat.com/show_bug.cgi?id=951731 --- configure.ac | 3 ++ daemon/gvfsbackendafc.c | 74 ++++++++++++++++++++++++++++++++++++++++++------- monitor/afc/afcvolume.c | 16 +++++++++-- 3 files changed, 80 insertions(+), 13 deletions(-) diff --git a/configure.ac b/configure.ac index 6951bc4b..14f6255f 100644 --- a/configure.ac +++ b/configure.ac @@ -380,6 +380,9 @@ if test "x$enable_afc" != "xno" ; then PKG_CHECK_EXISTS(libimobiledevice-1.0 >= 1.1.2, [AC_DEFINE(HAVE_LIBIMOBILEDEVICE_1_1_2, 1, [Define to 1 if libimobiledevice-1.1.2 found])]) + PKG_CHECK_EXISTS(libimobiledevice-1.0 >= 1.1.5, + [AC_DEFINE(HAVE_LIBIMOBILEDEVICE_1_1_5, 1, + [Define to 1 if libimobiledevice-1.1.5 found])]) fi fi diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c index ab4a9ce3..8b949b2c 100644 --- a/daemon/gvfsbackendafc.c +++ b/daemon/gvfsbackendafc.c @@ -401,7 +401,11 @@ g_vfs_backend_afc_mount (GVfsBackend *backend, const char *str; char *tmp; char *display_name = NULL; +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lockdownd_service_descriptor_t lockdown_service = NULL; +#else guint16 port; +#endif int virtual_port; GMountSpec *real_spec; GVfsBackendAfc *self; @@ -414,6 +418,7 @@ g_vfs_backend_afc_mount (GVfsBackend *backend, char **dcim_afcinfo; plist_t value; lockdownd_error_t lerr; + afc_error_t aerr; const gchar *choices[] = {_("Try again"), _("Cancel"), NULL}; /* keep in sync with the enum above */ gboolean aborted = FALSE; gchar *message = NULL; @@ -649,41 +654,62 @@ g_vfs_backend_afc_mount (GVfsBackend *backend, switch (self->mode) { case ACCESS_MODE_AFC: +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lerr = lockdownd_start_service (lockdown_cli, self->service, &lockdown_service); +#else lerr = lockdownd_start_service (lockdown_cli, self->service, &port); +#endif if (G_UNLIKELY(g_vfs_backend_lockdownd_check (lerr, G_VFS_JOB(job)))) { goto out_destroy_lockdown; } - if (G_UNLIKELY(g_vfs_backend_afc_check (afc_client_new (self->dev, - port, &self->afc_cli), - G_VFS_JOB(job)))) +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + aerr = afc_client_new (self->dev, lockdown_service, &self->afc_cli); +#else + aerr = afc_client_new (self->dev, port, &self->afc_cli); +#endif + if (G_UNLIKELY(g_vfs_backend_afc_check (aerr, G_VFS_JOB(job)))) { goto out_destroy_lockdown; } break; case ACCESS_MODE_HOUSE_ARREST: +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lerr = lockdownd_start_service (lockdown_cli, "com.apple.mobile.installation_proxy", &lockdown_service); +#else lerr = lockdownd_start_service (lockdown_cli, "com.apple.mobile.installation_proxy", &port); +#endif if (G_UNLIKELY(g_vfs_backend_lockdownd_check (lerr, G_VFS_JOB(job)))) { g_warning ("couldn't start inst proxy"); goto out_destroy_lockdown; } - if (G_UNLIKELY(g_vfs_backend_inst_check (instproxy_client_new (self->dev, - port, &self->inst), - G_VFS_JOB(job)))) +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + aerr = instproxy_client_new (self->dev, lockdown_service, &self->inst); +#else + aerr = instproxy_client_new (self->dev, port, &self->inst); +#endif + if (G_UNLIKELY(g_vfs_backend_inst_check (aerr, G_VFS_JOB(job)))) { g_warning ("couldn't create inst proxy instance"); goto out_destroy_lockdown; } +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lerr = lockdownd_start_service (lockdown_cli, "com.apple.springboardservices", &lockdown_service); +#else lerr = lockdownd_start_service (lockdown_cli, "com.apple.springboardservices", &port); +#endif if (G_UNLIKELY(g_vfs_backend_lockdownd_check (lerr, G_VFS_JOB(job)))) { g_warning ("couldn't start SBServices proxy"); goto out_destroy_lockdown; } - if (G_UNLIKELY(g_vfs_backend_sbs_check (sbservices_client_new (self->dev, - port, &self->sbs), - G_VFS_JOB(job)))) +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + aerr = sbservices_client_new (self->dev, lockdown_service, &self->sbs); +#else + aerr = sbservices_client_new (self->dev, port, &self->sbs); +#endif + if (G_UNLIKELY(g_vfs_backend_sbs_check (aerr, G_VFS_JOB(job)))) { g_warning ("couldn't create SBServices proxy instance"); goto out_destroy_lockdown; @@ -705,6 +731,9 @@ g_vfs_backend_afc_mount (GVfsBackend *backend, /* lockdown connection is not needed anymore */ lockdownd_client_free (lockdown_cli); +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lockdownd_service_descriptor_free (lockdown_service); +#endif /* Add camera item if necessary */ if (self->mode == ACCESS_MODE_AFC) @@ -723,6 +752,9 @@ g_vfs_backend_afc_mount (GVfsBackend *backend, out_destroy_lockdown: lockdownd_client_free (lockdown_cli); +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lockdownd_service_descriptor_free (lockdown_service); +#endif out_destroy_dev: idevice_free (self->dev); @@ -794,10 +826,15 @@ g_vfs_backend_setup_afc_for_app (GVfsBackendAfc *self, { AppInfo *info; lockdownd_client_t lockdown_cli; +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lockdownd_service_descriptor_t lockdown_service = NULL; +#else guint16 port; +#endif house_arrest_client_t house_arrest; afc_client_t afc; plist_t dict, error; + lockdownd_error_t lerr; info = g_hash_table_lookup (self->apps, id); @@ -812,7 +849,13 @@ g_vfs_backend_setup_afc_for_app (GVfsBackendAfc *self, g_warning ("Failed to get a lockdown to start house arrest for app %s", info->id); return; } - if (lockdownd_start_service (lockdown_cli, "com.apple.mobile.house_arrest", &port) != LOCKDOWN_E_SUCCESS) + +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lerr = lockdownd_start_service (lockdown_cli, "com.apple.mobile.house_arrest", &lockdown_service); +#else + lerr = lockdownd_start_service (lockdown_cli, "com.apple.mobile.house_arrest", &port); +#endif + if (lerr != LOCKDOWN_E_SUCCESS) { lockdownd_client_free (lockdown_cli); g_warning ("Failed to start house arrest for app %s", info->id); @@ -820,14 +863,25 @@ g_vfs_backend_setup_afc_for_app (GVfsBackendAfc *self, } house_arrest = NULL; +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + house_arrest_client_new (self->dev, lockdown_service, &house_arrest); +#else house_arrest_client_new (self->dev, port, &house_arrest); +#endif if (house_arrest == NULL) { g_warning ("Failed to start house arrest for app %s", info->id); lockdownd_client_free (lockdown_cli); +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lockdownd_service_descriptor_free (lockdown_service); +#endif return; } +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lockdownd_service_descriptor_free (lockdown_service); +#endif + dict = NULL; if (house_arrest_send_command (house_arrest, "VendContainer", info->id) != HOUSE_ARREST_E_SUCCESS || house_arrest_get_result (house_arrest, &dict) != HOUSE_ARREST_E_SUCCESS) diff --git a/monitor/afc/afcvolume.c b/monitor/afc/afcvolume.c index 9829077c..4801254d 100644 --- a/monitor/afc/afcvolume.c +++ b/monitor/afc/afcvolume.c @@ -80,6 +80,12 @@ _g_vfs_afc_volume_update_metadata (GVfsAfcVolume *self) guint retries; plist_t value; char *model, *display_name; +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lockdownd_service_descriptor_t lockdown_service = NULL; +#else + guint16 port; +#endif + lockdownd_error_t lerr; retries = 0; do { @@ -94,14 +100,18 @@ _g_vfs_afc_volume_update_metadata (GVfsAfcVolume *self) if (self->service != NULL) { - guint16 port; - if (lockdownd_client_new_with_handshake (dev, &lockdown_cli, "gvfs-afc-volume-monitor") != LOCKDOWN_E_SUCCESS) { idevice_free (dev); return 0; } - if (lockdownd_start_service(lockdown_cli, "com.apple.mobile.house_arrest", &port) != LOCKDOWN_E_SUCCESS) +#ifdef HAVE_LIBIMOBILEDEVICE_1_1_5 + lerr = lockdownd_start_service(lockdown_cli, "com.apple.mobile.house_arrest", &lockdown_service); + lockdownd_service_descriptor_free (lockdown_service); +#else + lerr = lockdownd_start_service(lockdown_cli, "com.apple.mobile.house_arrest", &port); +#endif + if (lerr != LOCKDOWN_E_SUCCESS) { idevice_free (dev); return 0; -- cgit v1.2.3