rpms/gvfs/F-12 gvfs-1.4.1-afc-dont-leak-volumes.patch, NONE, 1.1 gvfs-1.4.1-afc-fast-mime.patch, NONE, 1.1 gvfs-1.4.1-afc-fix-mtime-setting.patch, NONE, 1.1 gvfs-1.4.1-afc-hide-dot-files.patch, NONE, 1.1 gvfs-1.4.1-afc-indentation.patch, NONE, 1.1 gvfs-1.4.1-afc-latest-libiphone-api.patch, NONE, 1.1 gvfs-1.4.1-afc-mtime-pre-3.1-devices.patch, NONE, 1.1 gvfs-1.4.1-afc-mtime-setting.patch, NONE, 1.1 gvfs-1.4.1-afc-no-libgudev-dependency.patch, NONE, 1.1 gvfs-1.4.1-afc-preview-icon.patch, NONE, 1.1 gvfs-1.4.1-afc-shadowed-mount.patch, NONE, 1.1 gvfs-1.4.1-afc-st_mtime.patch, NONE, 1.1 gvfs-1.4.1-afc-thumbnails.patch, NONE, 1.1 gvfs-1.4.1-afc-x-content-types.patch, NONE, 1.1 gvfs-1.5.3-afc-new-libiphone.patch, NONE, 1.1 gvfs-1.5.3-use-libimobiledevice.patch, NONE, 1.1 0001-Add-AFC-backend.patch, 1.2, 1.3 gvfs.spec, 1.180, 1.181

Tomas Bzatek tbzatek at fedoraproject.org
Mon Feb 8 16:44:31 UTC 2010


Author: tbzatek

Update of /cvs/extras/rpms/gvfs/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv17600

Modified Files:
	0001-Add-AFC-backend.patch gvfs.spec 
Added Files:
	gvfs-1.4.1-afc-dont-leak-volumes.patch 
	gvfs-1.4.1-afc-fast-mime.patch 
	gvfs-1.4.1-afc-fix-mtime-setting.patch 
	gvfs-1.4.1-afc-hide-dot-files.patch 
	gvfs-1.4.1-afc-indentation.patch 
	gvfs-1.4.1-afc-latest-libiphone-api.patch 
	gvfs-1.4.1-afc-mtime-pre-3.1-devices.patch 
	gvfs-1.4.1-afc-mtime-setting.patch 
	gvfs-1.4.1-afc-no-libgudev-dependency.patch 
	gvfs-1.4.1-afc-preview-icon.patch 
	gvfs-1.4.1-afc-shadowed-mount.patch 
	gvfs-1.4.1-afc-st_mtime.patch gvfs-1.4.1-afc-thumbnails.patch 
	gvfs-1.4.1-afc-x-content-types.patch 
	gvfs-1.5.3-afc-new-libiphone.patch 
	gvfs-1.5.3-use-libimobiledevice.patch 
Log Message:
* Mon Feb  8 2010 Tomas Bzatek <tbzatek at redhat.com> - 1.4.3-5
- ftp: backport several PASV/EPSV fixes from master (#542205, #555033)
- AFC: Use new libimobiledevice library


gvfs-1.4.1-afc-dont-leak-volumes.patch:
 afcvolumemonitor.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- NEW FILE gvfs-1.4.1-afc-dont-leak-volumes.patch ---
>From e08ea6cd747969ec548a3285e1ec55f26d78cf1e Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess at hadess.net>
Date: Thu, 05 Nov 2009 23:28:19 +0000
Subject: Avoid leaking volumes when removing them

---
diff --git a/monitor/afc/afcvolumemonitor.c b/monitor/afc/afcvolumemonitor.c
index 76f4303..91b3e41 100644
--- a/monitor/afc/afcvolumemonitor.c
+++ b/monitor/afc/afcvolumemonitor.c
@@ -65,6 +65,7 @@ g_vfs_afc_monitor_remove_volume (GVfsAfcVolumeMonitor *self,
       g_print ("removing volume for device uuid '%s'\n", uuid);
       self->volumes = g_list_remove (self->volumes, volume);
       g_signal_emit_by_name (self, "volume-removed", volume);
+      g_object_unref (volume);
     }
 }
 
--
cgit v0.8.3.1

gvfs-1.4.1-afc-fast-mime.patch:
 gvfsbackendafc.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- NEW FILE gvfs-1.4.1-afc-fast-mime.patch ---
>From 4685f9e982f4c6884a21a0bd80d512a4ea0162db Mon Sep 17 00:00:00 2001
From: Christian Kellner <gicmo at gnome.org>
Date: Fri, 09 Oct 2009 10:48:24 +0000
Subject: [AFC] Also set fast mime-type

---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index e4e1da0..29c1ed1 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -834,7 +834,10 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
         }
 
       if (content_type)
-        g_file_info_set_content_type (info, content_type);
+        {
+          g_file_info_set_content_type (info, content_type);
+          g_file_info_set_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE, content_type);
+        }
 
       if (icon == NULL)
         icon = g_themed_icon_new ("text-x-generic");
--
cgit v0.8.3.1

gvfs-1.4.1-afc-fix-mtime-setting.patch:
 gvfsbackendafc.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- NEW FILE gvfs-1.4.1-afc-fix-mtime-setting.patch ---
>From dc17f80f9f37fb9c6b9300f8e25184efcd30e8bf Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess at hadess.net>
Date: Fri, 06 Nov 2009 02:44:04 +0000
Subject: Fix mtime setting

Thinko in mtime setting patch, spotted by Nikias.
---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 1e0d788..43affa7 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -1090,7 +1090,7 @@ g_vfs_backend_afc_set_attribute (GVfsBackend *backend,
   self = G_VFS_BACKEND_AFC(backend);
   g_return_if_fail(self->connected);
 
-  if (g_str_equal (attribute, G_FILE_ATTRIBUTE_TIME_MODIFIED) != FALSE)
+  if (g_str_equal (attribute, G_FILE_ATTRIBUTE_TIME_MODIFIED) == FALSE)
     {
       g_vfs_job_failed (G_VFS_JOB (job),
 			G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
--
cgit v0.8.3.1

gvfs-1.4.1-afc-hide-dot-files.patch:
 gvfsbackendafc.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- NEW FILE gvfs-1.4.1-afc-hide-dot-files.patch ---
>From 0b272cacaa0af2d448a34a88db31b0c56383c418 Mon Sep 17 00:00:00 2001
From: Christian Kellner <gicmo at gnome.org>
Date: Thu, 08 Oct 2009 21:27:58 +0000
Subject: [afc] Bug 597800 - Should hide dot files

---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 8c64b0d..e4e1da0 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -876,6 +876,11 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
     g_file_info_set_edit_name (info, display_name);
 
   g_free (display_name);
+
+  /* mark dot files as hidden */
+  if (basename != NULL && basename[0] == '.')
+     g_file_info_set_is_hidden (info, TRUE);
+
 }
 
 /* Callback for iterating over a directory. */
--
cgit v0.8.3.1

gvfs-1.4.1-afc-indentation.patch:
 gvfsbackendafc.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

--- NEW FILE gvfs-1.4.1-afc-indentation.patch ---
>From d1947d28585fb6f69ad1899b48598e93115c69f9 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess at hadess.net>
Date: Thu, 07 Jan 2010 18:08:22 +0000
Subject: [afc] Fix indentation

---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 8722ca7..783ed86 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -765,10 +765,11 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
       if (g_str_equal (afcinfo[i], "st_size"))
         {
           g_file_info_set_size (info, atoll(afcinfo[i+1]));
-        } else if (g_str_equal (afcinfo[i], "st_blocks"))
-          {
+        }
+      else if (g_str_equal (afcinfo[i], "st_blocks"))
+        {
             g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_UNIX_BLOCKS, atoi(afcinfo[i+1]));
-          }
+        }
       else if (g_str_equal (afcinfo[i], "st_ifmt"))
         {
           if (g_str_equal (afcinfo[i+1], "S_IFREG"))
--
cgit v0.8.3.1

gvfs-1.4.1-afc-latest-libiphone-api.patch:
 configure.ac                   |    4 ++--
 daemon/gvfsbackendafc.c        |   18 +++++++++---------
 monitor/afc/afcvolume.c        |    8 ++++----
 monitor/afc/afcvolumemonitor.c |   17 ++++++++---------
 4 files changed, 23 insertions(+), 24 deletions(-)

--- NEW FILE gvfs-1.4.1-afc-latest-libiphone-api.patch ---
>From 690150b6d2beb3364690b4303143a049598c1a9d Mon Sep 17 00:00:00 2001
From: Nikias Bassen <nikias at gmx.li>
Date: Thu, 29 Oct 2009 14:19:21 +0000
Subject: Adaption to latest libiphone API

Remove libusbmuxd dependency, and use afc_get_device_info_key
to get the model name.
---
diff --git a/configure.ac b/configure.ac
index 5069d73..d15db88 100644
--- a/configure.ac
+++ b/configure.ac
@@ -330,10 +330,10 @@ AFC_LIBS=
 AFC_CFLAGS=
 
 if test "x$enable_afc" != "xno" -a "x$msg_gudev" = "xyes" ; then
-  PKG_CHECK_EXISTS(libiphone-1.0 >= 0.9.2 libusbmuxd >= 1.0, msg_afc=yes)
+  PKG_CHECK_EXISTS(libiphone-1.0 >= 0.9.4, msg_afc=yes)
 
   if test "x$msg_afc" = "xyes"; then
-    PKG_CHECK_MODULES(AFC, libiphone-1.0 libusbmuxd >= 1.0)
+    PKG_CHECK_MODULES(AFC, libiphone-1.0)
     AC_DEFINE(HAVE_AFC, 1, [Define to 1 if AFC is going to be built])
   fi
 fi
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 8bdd2ec..131d683 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -218,21 +218,21 @@ g_vfs_backend_iphone_check (iphone_error_t cond, GVfsJob *job)
 }
 
 static void
-_usbmuxd_event_cb (const usbmuxd_event_t *event, void *user_data)
+_iphone_event_cb (const iphone_event_t *event, void *user_data)
 {
   GVfsBackendAfc *afc_backend = G_VFS_BACKEND_AFC (user_data);
 
   g_return_if_fail (afc_backend->uuid != NULL);
-  if (event->event != UE_DEVICE_REMOVE)
+  if (event->event != IPHONE_DEVICE_REMOVE)
     return;
-  if (g_str_equal (event->device.uuid, afc_backend->uuid) == FALSE)
+  if (g_str_equal (event->uuid, afc_backend->uuid) == FALSE)
     return;
 
   g_print ("Shutting down AFC backend for device uuid %s\n", afc_backend->uuid);
 
   g_vfs_backend_afc_close_connection (afc_backend);
 
-  usbmuxd_unsubscribe();
+  iphone_event_unsubscribe ();
 
   /* TODO: need a cleaner way to force unmount ourselves */
   exit (1);
@@ -258,7 +258,8 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
 
   self = G_VFS_BACKEND_AFC(backend);
   self->connected = FALSE;
-  usbmuxd_subscribe (_usbmuxd_event_cb, self);
+
+  iphone_event_subscribe (_iphone_event_cb, self);
 
   /* setup afc */
 
@@ -318,7 +319,7 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
 
   retries = 0;
   do {
-      err = iphone_get_device_by_uuid(&self->dev, self->uuid);
+      err = iphone_device_new(&self->dev, self->uuid);
       if (err == IPHONE_E_SUCCESS)
           break;
       g_usleep (G_USEC_PER_SEC);
@@ -368,11 +369,10 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
     }
 
   /* set correct fd icon spec name depending on device model */
-  self->model = afc_get_device_info_field (self->afc_cli, "Model");
-  if (G_UNLIKELY(self->model == NULL))
+  if (G_UNLIKELY(g_vfs_backend_afc_check (afc_get_device_info_key (self->afc_cli, "Model", &self->model), G_VFS_JOB(job))))
     goto out_destroy_afc;
 
-  if (strstr(self->model, "iPod") != NULL)
+  if ((self->model != NULL) && (strstr(self->model, "iPod") != NULL))
     {
       g_vfs_backend_set_icon_name (G_VFS_BACKEND(self), "multimedia-player-apple-ipod-touch");
     }
diff --git a/monitor/afc/afcvolume.c b/monitor/afc/afcvolume.c
index 0e3c65e..73f2e55 100644
--- a/monitor/afc/afcvolume.c
+++ b/monitor/afc/afcvolume.c
@@ -37,7 +37,7 @@ G_DEFINE_TYPE_EXTENDED(GVfsAfcVolume, g_vfs_afc_volume, G_TYPE_OBJECT, 0,
 static void
 g_vfs_afc_volume_finalize (GObject *object)
 {
-  GVfsAfcVolume *self;
+  GVfsAfcVolume *self = NULL;
 
   self = G_VFS_AFC_VOLUME(object);
 
@@ -81,7 +81,7 @@ _g_vfs_afc_volume_update_metadata (GVfsAfcVolume *self)
 
   retries = 0;
   do {
-      err = iphone_get_device_by_uuid (&dev, self->uuid);
+      err = iphone_device_new (&dev, self->uuid);
       if (err == IPHONE_E_SUCCESS)
         break;
       g_usleep (G_USEC_PER_SEC);
@@ -113,8 +113,8 @@ _g_vfs_afc_volume_update_metadata (GVfsAfcVolume *self)
   if (afc_client_new (dev, port, &afc_cli) == AFC_E_SUCCESS)
     {
       /* set correct fd icon spec name depending on device model */
-      model = afc_get_device_info_field (afc_cli, "Model");
-      if (model != NULL)
+      model = NULL;
+      if (afc_get_device_info_key (afc_cli, "Model", &model) == AFC_E_SUCCESS)
         {
           if(g_str_has_prefix(model, "iPod") != FALSE)
             {
diff --git a/monitor/afc/afcvolumemonitor.c b/monitor/afc/afcvolumemonitor.c
index e0de6ef..76f4303 100644
--- a/monitor/afc/afcvolumemonitor.c
+++ b/monitor/afc/afcvolumemonitor.c
@@ -10,7 +10,7 @@
 #include <gvfsproxyvolumemonitordaemon.h>
 #include <stdio.h>
 #include <gio/gio.h>
-#include <usbmuxd.h>
+#include <libiphone/libiphone.h>
 #include "afcvolume.h"
 #include "afcvolumemonitor.h"
 
@@ -69,7 +69,7 @@ g_vfs_afc_monitor_remove_volume (GVfsAfcVolumeMonitor *self,
 }
 
 static void
-g_vfs_afc_monitor_usbmuxd_event (const usbmuxd_event_t *event, void *user_data)
+g_vfs_afc_monitor_iphone_event (const iphone_event_t *event, void *user_data)
 {
   GVfsAfcVolumeMonitor *self;
 
@@ -77,10 +77,10 @@ g_vfs_afc_monitor_usbmuxd_event (const usbmuxd_event_t *event, void *user_data)
 
   self = G_VFS_AFC_VOLUME_MONITOR(user_data);
 
-  if (event->event == UE_DEVICE_ADD)
-    g_vfs_afc_monitor_create_volume (self, event->device.uuid);
+  if (event->event == IPHONE_DEVICE_ADD)
+    g_vfs_afc_monitor_create_volume (self, event->uuid);
   else
-    g_vfs_afc_monitor_remove_volume (self, event->device.uuid);
+    g_vfs_afc_monitor_remove_volume (self, event->uuid);
 }
 
 static GObject *
@@ -94,7 +94,7 @@ g_vfs_afc_volume_monitor_constructor (GType type, guint ncps,
 
   self->volumes = NULL;
 
-  usbmuxd_subscribe(g_vfs_afc_monitor_usbmuxd_event, self);
+  iphone_event_subscribe(g_vfs_afc_monitor_iphone_event, self);
 
   g_print ("Volume monitor alive\n");
 
@@ -115,11 +115,11 @@ g_vfs_afc_volume_monitor_finalize (GObject *_self)
 
   self = G_VFS_AFC_VOLUME_MONITOR(_self);
 
-  usbmuxd_unsubscribe();
-
   if (self->volumes)
     list_free (self->volumes);
 
+  iphone_event_unsubscribe();
+
   if (G_OBJECT_CLASS(g_vfs_afc_volume_monitor_parent_class)->finalize)
     (*G_OBJECT_CLASS(g_vfs_afc_volume_monitor_parent_class)->finalize)( G_OBJECT(self));
 }
--
cgit v0.8.3.1

gvfs-1.4.1-afc-mtime-pre-3.1-devices.patch:
 gvfsbackendafc.c |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

--- NEW FILE gvfs-1.4.1-afc-mtime-pre-3.1-devices.patch ---
>From e0ccf14f320f6d7b15f13bf35588d9927b8e0b12 Mon Sep 17 00:00:00 2001
From: Nikias Bassen <nikias at gmx.li>
Date: Mon, 02 Nov 2009 13:19:37 +0000
Subject: Ignore error for pre-3.1 devices when setting modification time

---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 48ee052..1e0d788 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -1085,6 +1085,7 @@ g_vfs_backend_afc_set_attribute (GVfsBackend *backend,
 {
   GVfsBackendAfc *self;
   uint64_t mtime = 0;
+  afc_error_t err;
 
   self = G_VFS_BACKEND_AFC(backend);
   g_return_if_fail(self->connected);
@@ -1099,9 +1100,13 @@ g_vfs_backend_afc_set_attribute (GVfsBackend *backend,
 
   mtime = *(guint64*)(value_p) * (guint64)1000000000;
 
-  if (G_UNLIKELY(g_vfs_backend_afc_check (afc_set_file_time (self->afc_cli,
-                                                             filename, mtime),
-                                          G_VFS_JOB(job))))
+  err = afc_set_file_time (self->afc_cli, filename, mtime);
+  if (err == AFC_E_UNKNOWN_PACKET_TYPE)
+    {
+      /* ignore error for pre-3.1 devices as the do not support setting file modification times */
+      return g_vfs_job_succeeded (G_VFS_JOB(job));
+    }
+  if (G_UNLIKELY(g_vfs_backend_afc_check (err, G_VFS_JOB(job))))
     {
       return;
     }
--
cgit v0.8.3.1

gvfs-1.4.1-afc-mtime-setting.patch:
 gvfsbackendafc.c |   37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

--- NEW FILE gvfs-1.4.1-afc-mtime-setting.patch ---
>From dc24aa1c9702114d3a66218a366b2b4292f34352 Mon Sep 17 00:00:00 2001
From: Nikias Bassen <nikias at gmx.li>
Date: Sat, 31 Oct 2009 01:47:17 +0000
Subject: Support for setting file modification times

---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 131d683..48ee052 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -1075,6 +1075,41 @@ g_vfs_backend_afc_set_display_name (GVfsBackend *backend,
 }
 
 static void
+g_vfs_backend_afc_set_attribute (GVfsBackend *backend,
+				 GVfsJobSetAttribute *job,
+				 const char *filename,
+				 const char *attribute,
+				 GFileAttributeType type,
+				 gpointer value_p,
+				 GFileQueryInfoFlags flags)
+{
+  GVfsBackendAfc *self;
+  uint64_t mtime = 0;
+
+  self = G_VFS_BACKEND_AFC(backend);
+  g_return_if_fail(self->connected);
+
+  if (g_str_equal (attribute, G_FILE_ATTRIBUTE_TIME_MODIFIED) != FALSE)
+    {
+      g_vfs_job_failed (G_VFS_JOB (job),
+			G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+			_("Operation unsupported"));
+      return;
+    }
+
+  mtime = *(guint64*)(value_p) * (guint64)1000000000;
+
+  if (G_UNLIKELY(g_vfs_backend_afc_check (afc_set_file_time (self->afc_cli,
+                                                             filename, mtime),
+                                          G_VFS_JOB(job))))
+    {
+      return;
+    }
+
+  g_vfs_job_succeeded (G_VFS_JOB(job));
+}
+
+static void
 g_vfs_backend_afc_make_directory (GVfsBackend *backend,
                                   GVfsJobMakeDirectory *job,
                                   const char *path)
@@ -1221,6 +1256,7 @@ g_vfs_backend_afc_class_init (GVfsBackendAfcClass *klass)
   backend_class->make_symlink     = g_vfs_backend_afc_make_symlink;
   backend_class->move             = g_vfs_backend_afc_move;
   backend_class->set_display_name = g_vfs_backend_afc_set_display_name;
+  backend_class->set_attribute    = g_vfs_backend_afc_set_attribute;
 }
 
 /*
--
cgit v0.8.3.1

gvfs-1.4.1-afc-no-libgudev-dependency.patch:
 configure.ac |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

--- NEW FILE gvfs-1.4.1-afc-no-libgudev-dependency.patch ---
>From 6c91b2513d7ad1bd4774c8559c4ceb200a0a9d61 Mon Sep 17 00:00:00 2001
From: Nikias Bassen <nikias at gmx.li>
Date: Fri, 30 Oct 2009 02:17:08 +0000
Subject: build fix: afc-backend does not depend on libgudev

---
diff --git a/configure.ac b/configure.ac
index d15db88..2d032fa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -329,7 +329,7 @@ msg_afc=no
 AFC_LIBS=
 AFC_CFLAGS=
 
-if test "x$enable_afc" != "xno" -a "x$msg_gudev" = "xyes" ; then
+if test "x$enable_afc" != "xno" ; then
   PKG_CHECK_EXISTS(libiphone-1.0 >= 0.9.4, msg_afc=yes)
 
   if test "x$msg_afc" = "xyes"; then
--
cgit v0.8.3.1

gvfs-1.4.1-afc-preview-icon.patch:
 gvfsbackendafc.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- NEW FILE gvfs-1.4.1-afc-preview-icon.patch ---
>From cb5c88866e02ef50f0a22a7575e8b37f540978bf Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess at hadess.net>
Date: Tue, 10 Nov 2009 13:33:21 +0000
Subject: [afc] Only check for a preview icon if actually requested

Should speed up enumeration slightly.
---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 0c34e8b..8722ca7 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -904,7 +904,8 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
   g_file_info_set_is_hidden (info, hidden);
 
   /* Check for matching thumbnail in .MISC directory */
-  if (path != NULL &&
+  if (g_file_attribute_matcher_matches (matcher, G_FILE_ATTRIBUTE_PREVIEW_ICON) &&
+      path != NULL &&
       g_str_has_prefix (path, "/DCIM/") &&
       hidden == FALSE &&
       basename != NULL &&
--
cgit v0.8.3.1

gvfs-1.4.1-afc-shadowed-mount.patch:
 afcvolume.c |   16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

--- NEW FILE gvfs-1.4.1-afc-shadowed-mount.patch ---
>From 5bf437d9e65d69e985af1c1dc8d9c84cac744c96 Mon Sep 17 00:00:00 2001
From: Martin Szulecki <opensuse at sukimashita.com>
Date: Sun, 15 Nov 2009 00:42:03 +0000
Subject: Fix shadowed mount showing up next to existing volume icon

The activation_root for a volume was not set when queried and thus
causing two icons created for the same volume/mount.

Now it already sets the activiation_root in the volume constructor
like in the gphoto2 backend.

https://bugzilla.gnome.org/show_bug.cgi?id=597802
---
diff --git a/monitor/afc/afcvolume.c b/monitor/afc/afcvolume.c
index 73f2e55..3af4661 100644
--- a/monitor/afc/afcvolume.c
+++ b/monitor/afc/afcvolume.c
@@ -137,11 +137,19 @@ g_vfs_afc_volume_new (GVolumeMonitor *monitor,
                       const char     *uuid)
 {
   GVfsAfcVolume *self;
+  GFile *root;
+  char *uri;
 
   self = G_VFS_AFC_VOLUME(g_object_new (G_VFS_TYPE_AFC_VOLUME, NULL));
   self->monitor = monitor;
   self->uuid = g_strdup (uuid);
 
+  uri = g_strdup_printf ("afc://%s", self->uuid);
+  root = g_file_new_for_uri (uri);
+  g_free (uri);
+
+  g_object_set_data_full (G_OBJECT(self), "root", root, g_object_unref);
+
   /* Get mount information here */
   if (!_g_vfs_afc_volume_update_metadata (self))
       return NULL;
@@ -233,15 +241,12 @@ g_vfs_afc_volume_mount (GVolume             *volume,
   GVfsAfcVolume *afc_volume = G_VFS_AFC_VOLUME (volume);
   ActivationMountOp *data;
   GFile *root;
-  char *uri;
 
   g_print ("g_vfs_afc_volume_mount (can_mount=%d uuid=%s)\n",
            g_vfs_afc_volume_can_mount (volume),
            afc_volume->uuid);
 
-  uri = g_strdup_printf ("afc://%s", afc_volume->uuid);
-  root = g_file_new_for_uri (uri);
-  g_free (uri);
+  root = g_object_get_data (G_OBJECT (volume), "root");
 
   data = g_new0 (ActivationMountOp, 1);
   data->enclosing_volume = afc_volume;
@@ -249,8 +254,6 @@ g_vfs_afc_volume_mount (GVolume             *volume,
   data->user_data = user_data;
   data->root = root;
 
-  g_object_set_data_full (G_OBJECT(volume), "root", g_object_ref (root), g_object_unref);
-
   g_file_mount_enclosing_volume (root,
                                  0,
                                  mount_operation,
--
cgit v0.8.3.1

gvfs-1.4.1-afc-st_mtime.patch:
 gvfsbackendafc.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- NEW FILE gvfs-1.4.1-afc-st_mtime.patch ---
>From 3590a1b9bac58bf95af25fa5348c2a34b1da6bd3 Mon Sep 17 00:00:00 2001
From: Nikias Bassen <nikias at gmx.li>
Date: Thu, 29 Oct 2009 11:22:15 +0000
Subject: [afc] Add st_mtime support for OS 3.1

Add mtime support in g_vfs_backend_afc_set_info_from_afcinfo,
as supported by OS 3.1.
---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 29c1ed1..8bdd2ec 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -797,6 +797,10 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
         {
           g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_NLINK, atoi(afcinfo[i+1]));
         }
+      else if (g_str_equal (afcinfo[i], "st_mtime"))
+        {
+	  g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED, atoll(afcinfo[i+1]) / 1000000000);
+	}
       else if (g_str_equal (afcinfo[i], "LinkTarget"))
         {
           linktarget = g_strdup (afcinfo[i+1]);
--
cgit v0.8.3.1

gvfs-1.4.1-afc-thumbnails.patch:
 gvfsbackendafc.c |   72 +++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 67 insertions(+), 5 deletions(-)

--- NEW FILE gvfs-1.4.1-afc-thumbnails.patch ---
>From 7226f3868128ff7b888a7bde88c6b4484c373b43 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess at hadess.net>
Date: Fri, 06 Nov 2009 00:38:48 +0000
Subject: [afc] Add thumbnails for Photos in /DCIM

Photos taken using the iPhone or iPod touch will be thumbnailed
by the device, on-disk, so try to use those instead of letting
the computer download the whole file for it.

Make sure we only process non-hidden files inside the DCIM
directory, to avoid unnecessary checks.

https://bugzilla.gnome.org/show_bug.cgi?id=597804
---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 43affa7..aa90a41 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -733,6 +733,7 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
                                          GFileInfo *info,
                                          char **afcinfo,
                                          const char *basename,
+                                         const char *path,
                                          GFileAttributeMatcher *matcher,
                                          GFileQueryInfoFlags flags)
 {
@@ -742,6 +743,7 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
   char *display_name;
   char *linktarget = NULL;
   char **afctargetinfo = NULL;
+  gboolean hidden = FALSE;
   int i;
 
   /* get file attributes from info list */
@@ -859,7 +861,7 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
         {
           /* query the linktarget instead and merge the file info of it */
           if (AFC_E_SUCCESS == afc_get_file_info (self->afc_cli, linktarget, &afctargetinfo))
-            g_vfs_backend_afc_set_info_from_afcinfo (self, info, afctargetinfo, linktarget, matcher, flags);
+            g_vfs_backend_afc_set_info_from_afcinfo (self, info, afctargetinfo, linktarget, NULL, matcher, flags);
           if (afctargetinfo)
             g_strfreev (afctargetinfo);
         }
@@ -886,8 +888,69 @@ g_vfs_backend_afc_set_info_from_afcinfo (GVfsBackendAfc *self,
 
   /* mark dot files as hidden */
   if (basename != NULL && basename[0] == '.')
-     g_file_info_set_is_hidden (info, TRUE);
+     hidden = TRUE;
+
+  g_file_info_set_is_hidden (info, hidden);
+
+  /* Check for matching thumbnail in .MISC directory */
+  if (path != NULL &&
+      g_str_has_prefix (path, "/DCIM/") &&
+      hidden == FALSE &&
+      basename != NULL &&
+      type == G_FILE_TYPE_REGULAR &&
+      strlen (path) > 1 &&
+      strlen (basename) > 4 &&
+      basename[strlen(basename) - 4] == '.')
+    {
+      char *thumb_uri, *thumb_base, *thumb_path;
+      char *parent, *ptr, *no_suffix;
+      char **thumb_afcinfo;
+      GFile *thumb_file;
+
+      GMountSpec *mount_spec;
+      const char *port;
+
+      /* Parent directory */
+      ptr = strrchr (path, '/');
+      if (ptr == NULL)
+        return;
+      parent = g_strndup (path, ptr - path);
+
+      /* Basename with suffix replaced */
+      no_suffix = g_strndup (basename, strlen (basename) - 3);
+      thumb_base = g_strdup_printf ("%s%s", no_suffix, "THM");
+      g_free (no_suffix);
+
+      /* Full thumbnail path */
+      thumb_path = g_build_filename (parent, ".MISC", thumb_base, NULL);
 
+      g_free (parent);
+      g_free (thumb_base);
+
+      thumb_afcinfo = NULL;
+      if (afc_get_file_info (self->afc_cli, thumb_path, &thumb_afcinfo) != 0)
+        {
+          g_strfreev (thumb_afcinfo);
+          g_free (thumb_path);
+          return;
+        }
+      g_strfreev (thumb_afcinfo);
+
+      /* Get the URI for the thumbnail file */
+      mount_spec = g_vfs_backend_get_mount_spec (G_VFS_BACKEND (self));
+      port = g_mount_spec_get (mount_spec, "port");
+      thumb_uri = g_strdup_printf ("afc://%s%s%s", self->uuid, port ? port : "", thumb_path);
+      thumb_file = g_file_new_for_uri (thumb_uri);
+      g_free (thumb_uri);
+
+      /* Set preview icon */
+      icon = g_file_icon_new (thumb_file);
+      g_object_unref (thumb_file);
+      g_file_info_set_attribute_object (info,
+                                        G_FILE_ATTRIBUTE_PREVIEW_ICON,
+                                        G_OBJECT (icon));
+      g_object_unref (icon);
+    }
 }
 
 /* Callback for iterating over a directory. */
@@ -934,7 +997,7 @@ g_vfs_backend_afc_enumerate (GVfsBackend *backend,
       if (G_LIKELY(afc_get_file_info(self->afc_cli, file_path, &afcinfo) == AFC_E_SUCCESS))
         {
           info = g_file_info_new ();
-          g_vfs_backend_afc_set_info_from_afcinfo (self, info, afcinfo, *ptr, matcher, flags);
+          g_vfs_backend_afc_set_info_from_afcinfo (self, info, afcinfo, *ptr, file_path, matcher, flags);
           g_vfs_job_enumerate_add_info (job, info);
           g_object_unref (G_OBJECT(info));
           g_strfreev (afcinfo);
@@ -978,7 +1041,7 @@ g_vfs_backend_afc_query_info (GVfsBackend *backend,
   else
     basename = path;
 
-  g_vfs_backend_afc_set_info_from_afcinfo (self, info, afcinfo, basename, matcher, flags);
+  g_vfs_backend_afc_set_info_from_afcinfo (self, info, afcinfo, basename, path, matcher, flags);
   if (afcinfo)
     g_strfreev (afcinfo);
 
--
cgit v0.8.3.1

gvfs-1.4.1-afc-x-content-types.patch:
 gvfsbackendafc.c |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

--- NEW FILE gvfs-1.4.1-afc-x-content-types.patch ---
>From 92c179d6ce2682595e7ce1a77e301ffc49e25526 Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess at hadess.net>
Date: Fri, 06 Nov 2009 00:49:17 +0000
Subject: [afc] Add x-content types for AFC backend

https://bugzilla.gnome.org/show_bug.cgi?id=597805
---
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index aa90a41..0c34e8b 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -255,6 +255,9 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
   int retries;
   iphone_error_t err;
   lockdownd_client_t lockdown_cli = NULL;
+  char *camera_x_content_types[] = { "x-content/audio-player", "x-content/image-dcf", NULL};
+  char *media_player_x_content_types[] = {"x-content/audio-player", NULL};
+  char **dcim_afcinfo;
 
   self = G_VFS_BACKEND_AFC(backend);
   self->connected = FALSE;
@@ -384,6 +387,14 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
   /* lockdown connection is not needed anymore */
   lockdownd_client_free (lockdown_cli);
 
+  /* Add camera item if necessary */
+  dcim_afcinfo = NULL;
+  if (afc_get_file_info (self->afc_cli, "/DCIM", &dcim_afcinfo) == AFC_E_SUCCESS)
+    g_vfs_backend_set_x_content_types (backend, camera_x_content_types);
+  else
+    g_vfs_backend_set_x_content_types (backend, media_player_x_content_types);
+  g_strfreev (dcim_afcinfo);
+
   self->connected = TRUE;
   g_vfs_job_succeeded (G_VFS_JOB(job));
   return;
--
cgit v0.8.3.1

gvfs-1.5.3-afc-new-libiphone.patch:
 configure.ac            |    2 +-
 daemon/gvfsbackendafc.c |    9 +++++----
 monitor/afc/afcvolume.c |    5 ++---
 3 files changed, 8 insertions(+), 8 deletions(-)

--- NEW FILE gvfs-1.5.3-afc-new-libiphone.patch ---
>From a496883e99676e30e56280b7a43551c796552d5f Mon Sep 17 00:00:00 2001
From: Bastien Nocera <hadess at hadess.net>
Date: Tue, 26 Jan 2010 14:30:56 +0000
Subject: Update AFC backend and volume monitor for libiphone 0.9.6

---
diff --git a/configure.ac b/configure.ac
index b3a96f3..b47f091 100644
--- a/configure.ac
+++ b/configure.ac
@@ -331,7 +331,7 @@ AFC_LIBS=
 AFC_CFLAGS=
 
 if test "x$enable_afc" != "xno" ; then
-  PKG_CHECK_EXISTS(libiphone-1.0 >= 0.9.4, msg_afc=yes)
+  PKG_CHECK_EXISTS(libiphone-1.0 >= 0.9.6, msg_afc=yes)
 
   if test "x$msg_afc" = "xyes"; then
     PKG_CHECK_MODULES(AFC, libiphone-1.0)
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 783ed86..2d42d15 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -249,7 +249,8 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
   const char *str;
   char *tmp;
   char *display_name;
-  int port, virtual_port;
+  guint16 port;
+  int virtual_port;
   GMountSpec *real_spec;
   GVfsBackendAfc *self;
   int retries;
@@ -330,8 +331,9 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
 
   if (G_UNLIKELY(g_vfs_backend_iphone_check(err, G_VFS_JOB(job))))
     goto out_destroy_service;
-  if (G_UNLIKELY(g_vfs_backend_lockdownd_check (lockdownd_client_new (self->dev,
-                                                                      &lockdown_cli),
+  if (G_UNLIKELY(g_vfs_backend_lockdownd_check (lockdownd_client_new_with_handshake (self->dev,
+                                                                                     &lockdown_cli,
+                                                                                     "gvfsd-afc"),
                                                 G_VFS_JOB(job))))
     {
       goto out_destroy_dev;
@@ -1305,7 +1307,6 @@ g_vfs_backend_afc_init (GVfsBackendAfc *self)
     {
       /* enable full debugging */
       iphone_set_debug_level (1);
-      iphone_set_debug_mask (DBGMASK_ALL);
     }
 }
 
diff --git a/monitor/afc/afcvolume.c b/monitor/afc/afcvolume.c
index 3af4661..a0413ec 100644
--- a/monitor/afc/afcvolume.c
+++ b/monitor/afc/afcvolume.c
@@ -77,7 +77,7 @@ _g_vfs_afc_volume_update_metadata (GVfsAfcVolume *self)
   iphone_error_t err;
   guint retries;
   char *model, *display_name;
-  int port;
+  guint16 port;
 
   retries = 0;
   do {
@@ -90,7 +90,7 @@ _g_vfs_afc_volume_update_metadata (GVfsAfcVolume *self)
   if (err != IPHONE_E_SUCCESS)
     return 0;
 
-  if (lockdownd_client_new (dev, &lockdown_cli) != LOCKDOWN_E_SUCCESS)
+  if (lockdownd_client_new_with_handshake (dev, &lockdown_cli, "gvfs-afc-volume-monitor") != LOCKDOWN_E_SUCCESS)
     {
       iphone_device_free (dev);
       return 0;
--
cgit v0.8.3.1

gvfs-1.5.3-use-libimobiledevice.patch:
 configure.ac                   |    4 +--
 daemon/gvfsbackendafc.c        |   44 ++++++++++++++++++++---------------------
 monitor/afc/afcvolume.c        |   22 ++++++++++----------
 monitor/afc/afcvolumemonitor.c |   11 ++++------
 4 files changed, 40 insertions(+), 41 deletions(-)

--- NEW FILE gvfs-1.5.3-use-libimobiledevice.patch ---
>From 3f3f130072c94e38d6f07ef37d425a1c86bddd29 Mon Sep 17 00:00:00 2001
From: Nikias Bassen <nikias at gmx.li>
Date: Sun, 31 Jan 2010 11:54:44 +0000
Subject: Update AFC backend and volume monitor for libimobiledevice 0.9.7

---
diff --git a/configure.ac b/configure.ac
index b47f091..f366d3a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -331,10 +331,10 @@ AFC_LIBS=
 AFC_CFLAGS=
 
 if test "x$enable_afc" != "xno" ; then
-  PKG_CHECK_EXISTS(libiphone-1.0 >= 0.9.6, msg_afc=yes)
+  PKG_CHECK_EXISTS(libimobiledevice-1.0 >= 0.9.7, msg_afc=yes)
 
   if test "x$msg_afc" = "xyes"; then
-    PKG_CHECK_MODULES(AFC, libiphone-1.0)
+    PKG_CHECK_MODULES(AFC, libimobiledevice-1.0)
     AC_DEFINE(HAVE_AFC, 1, [Define to 1 if AFC is going to be built])
   fi
 fi
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 2d42d15..c056718 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -16,9 +16,9 @@
 #include <glib/gi18n.h>
 #include <errno.h>
 
-#include <libiphone/libiphone.h>
-#include <libiphone/lockdown.h>
-#include <libiphone/afc.h>
+#include <libimobiledevice/libimobiledevice.h>
+#include <libimobiledevice/lockdown.h>
+#include <libimobiledevice/afc.h>
 
 #include "gvfsbackendafc.h"
 #include "gvfsjobopenforread.h"
@@ -46,7 +46,7 @@ struct _GVfsBackendAfc {
   char *model;
   gboolean connected;
 
-  iphone_device_t dev;
+  idevice_t dev;
   afc_client_t afc_cli;
 };
 
@@ -124,7 +124,7 @@ g_vfs_backend_afc_close_connection (GVfsBackendAfc *self)
       afc_client_free (self->afc_cli);
       g_free (self->model);
       self->model = NULL;
-      iphone_device_free (self->dev);
+      idevice_free (self->dev);
     }
   self->connected = FALSE;
 }
@@ -194,23 +194,23 @@ g_vfs_backend_lockdownd_check (lockdownd_error_t cond, GVfsJob *job)
 }
 
 static int
-g_vfs_backend_iphone_check (iphone_error_t cond, GVfsJob *job)
+g_vfs_backend_idevice_check (idevice_error_t cond, GVfsJob *job)
 {
-  if (G_LIKELY(cond == IPHONE_E_SUCCESS))
+  if (G_LIKELY(cond == IDEVICE_E_SUCCESS))
         return 0;
 
   switch (cond)
     {
-    case IPHONE_E_INVALID_ARG:
+    case IDEVICE_E_INVALID_ARG:
       g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
-                        _("iPhone Device Error: Invalid Argument"));
+                        _("libimobiledevice Error: Invalid Argument"));
       break;
-    case IPHONE_E_NO_DEVICE:
+    case IDEVICE_E_NO_DEVICE:
       g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_FAILED,
-                        _("iPhone Device Error: No device found. Make sure usbmuxd is set up correctly."));
+                        _("libimobiledevice Error: No device found. Make sure usbmuxd is set up correctly."));
     default:
       g_vfs_job_failed (job, G_IO_ERROR, G_IO_ERROR_FAILED,
-                        _("Unhandled iPhone Device error (%d)"), cond);
+                        _("Unhandled libimobiledevice error (%d)"), cond);
       break;
     }
 
@@ -218,12 +218,12 @@ g_vfs_backend_iphone_check (iphone_error_t cond, GVfsJob *job)
 }
 
 static void
-_iphone_event_cb (const iphone_event_t *event, void *user_data)
+_idevice_event_cb (const idevice_event_t *event, void *user_data)
 {
   GVfsBackendAfc *afc_backend = G_VFS_BACKEND_AFC (user_data);
 
   g_return_if_fail (afc_backend->uuid != NULL);
-  if (event->event != IPHONE_DEVICE_REMOVE)
+  if (event->event != IDEVICE_DEVICE_REMOVE)
     return;
   if (g_str_equal (event->uuid, afc_backend->uuid) == FALSE)
     return;
@@ -232,7 +232,7 @@ _iphone_event_cb (const iphone_event_t *event, void *user_data)
 
   g_vfs_backend_afc_close_connection (afc_backend);
 
-  iphone_event_unsubscribe ();
+  idevice_event_unsubscribe ();
 
   /* TODO: need a cleaner way to force unmount ourselves */
   exit (1);
@@ -254,7 +254,7 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
   GMountSpec *real_spec;
   GVfsBackendAfc *self;
   int retries;
-  iphone_error_t err;
+  idevice_error_t err;
   lockdownd_client_t lockdown_cli = NULL;
   char *camera_x_content_types[] = { "x-content/audio-player", "x-content/image-dcf", NULL};
   char *media_player_x_content_types[] = {"x-content/audio-player", NULL};
@@ -263,7 +263,7 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
   self = G_VFS_BACKEND_AFC(backend);
   self->connected = FALSE;
 
-  iphone_event_subscribe (_iphone_event_cb, self);
+  idevice_event_subscribe (_idevice_event_cb, self);
 
   /* setup afc */
 
@@ -323,13 +323,13 @@ g_vfs_backend_afc_mount (GVfsBackend *backend,
 
   retries = 0;
   do {
-      err = iphone_device_new(&self->dev, self->uuid);
-      if (err == IPHONE_E_SUCCESS)
+      err = idevice_new(&self->dev, self->uuid);
+      if (err == IDEVICE_E_SUCCESS)
           break;
       g_usleep (G_USEC_PER_SEC);
   } while (retries++ < 10);
 
-  if (G_UNLIKELY(g_vfs_backend_iphone_check(err, G_VFS_JOB(job))))
+  if (G_UNLIKELY(g_vfs_backend_idevice_check(err, G_VFS_JOB(job))))
     goto out_destroy_service;
   if (G_UNLIKELY(g_vfs_backend_lockdownd_check (lockdownd_client_new_with_handshake (self->dev,
                                                                                      &lockdown_cli,
@@ -408,7 +408,7 @@ out_destroy_lockdown:
   lockdownd_client_free (lockdown_cli);
 
 out_destroy_dev:
-  iphone_device_free (self->dev);
+  idevice_free (self->dev);
 
 out_destroy_service:
   g_free (self->service);
@@ -1306,7 +1306,7 @@ g_vfs_backend_afc_init (GVfsBackendAfc *self)
   if (g_getenv ("GVFS_DEBUG") != NULL)
     {
       /* enable full debugging */
-      iphone_set_debug_level (1);
+      idevice_set_debug_level (1);
     }
 }
 
diff --git a/monitor/afc/afcvolume.c b/monitor/afc/afcvolume.c
index a0413ec..26da41f 100644
--- a/monitor/afc/afcvolume.c
+++ b/monitor/afc/afcvolume.c
@@ -9,9 +9,9 @@
 #include <glib.h>
 #include <gio/gio.h>
 
-#include <libiphone/libiphone.h>
-#include <libiphone/lockdown.h>
-#include <libiphone/afc.h>
+#include <libimobiledevice/libimobiledevice.h>
+#include <libimobiledevice/lockdown.h>
+#include <libimobiledevice/afc.h>
 
 #include "afcvolume.h"
 
@@ -71,28 +71,28 @@ g_vfs_afc_volume_class_init (GVfsAfcVolumeClass *klass)
 static int
 _g_vfs_afc_volume_update_metadata (GVfsAfcVolume *self)
 {
-  iphone_device_t dev;
+  idevice_t dev;
   afc_client_t afc_cli;
   lockdownd_client_t lockdown_cli = NULL;
-  iphone_error_t err;
+  idevice_error_t err;
   guint retries;
   char *model, *display_name;
   guint16 port;
 
   retries = 0;
   do {
-      err = iphone_device_new (&dev, self->uuid);
-      if (err == IPHONE_E_SUCCESS)
+      err = idevice_new (&dev, self->uuid);
+      if (err == IDEVICE_E_SUCCESS)
         break;
       g_usleep (G_USEC_PER_SEC);
   } while (retries++ < 10);
 
-  if (err != IPHONE_E_SUCCESS)
+  if (err != IDEVICE_E_SUCCESS)
     return 0;
 
   if (lockdownd_client_new_with_handshake (dev, &lockdown_cli, "gvfs-afc-volume-monitor") != LOCKDOWN_E_SUCCESS)
     {
-      iphone_device_free (dev);
+      idevice_free (dev);
       return 0;
     }
 
@@ -106,7 +106,7 @@ _g_vfs_afc_volume_update_metadata (GVfsAfcVolume *self)
   if (lockdownd_start_service (lockdown_cli, DEFAULT_SERVICE, &port) != LOCKDOWN_E_SUCCESS)
     {
       lockdownd_client_free (lockdown_cli);
-      iphone_device_free (dev);
+      idevice_free (dev);
       return 0;
     }
 
@@ -127,7 +127,7 @@ _g_vfs_afc_volume_update_metadata (GVfsAfcVolume *self)
     }
 
   lockdownd_client_free (lockdown_cli);
-  iphone_device_free (dev);
+  idevice_free (dev);
 
   return 1;
 }
diff --git a/monitor/afc/afcvolumemonitor.c b/monitor/afc/afcvolumemonitor.c
index 91b3e41..d10e862 100644
--- a/monitor/afc/afcvolumemonitor.c
+++ b/monitor/afc/afcvolumemonitor.c
@@ -10,7 +10,7 @@
 #include <gvfsproxyvolumemonitordaemon.h>
 #include <stdio.h>
 #include <gio/gio.h>
-#include <libiphone/libiphone.h>
+#include <libimobiledevice/libimobiledevice.h>
 #include "afcvolume.h"
 #include "afcvolumemonitor.h"
 
@@ -70,7 +70,7 @@ g_vfs_afc_monitor_remove_volume (GVfsAfcVolumeMonitor *self,
 }
 
 static void
-g_vfs_afc_monitor_iphone_event (const iphone_event_t *event, void *user_data)
+g_vfs_afc_monitor_idevice_event (const idevice_event_t *event, void *user_data)
 {
   GVfsAfcVolumeMonitor *self;
 
@@ -78,7 +78,7 @@ g_vfs_afc_monitor_iphone_event (const iphone_event_t *event, void *user_data)
 
   self = G_VFS_AFC_VOLUME_MONITOR(user_data);
 
-  if (event->event == IPHONE_DEVICE_ADD)
+  if (event->event == IDEVICE_DEVICE_ADD)
     g_vfs_afc_monitor_create_volume (self, event->uuid);
   else
     g_vfs_afc_monitor_remove_volume (self, event->uuid);
@@ -95,7 +95,7 @@ g_vfs_afc_volume_monitor_constructor (GType type, guint ncps,
 
   self->volumes = NULL;
 
-  iphone_event_subscribe(g_vfs_afc_monitor_iphone_event, self);
+  idevice_event_subscribe(g_vfs_afc_monitor_idevice_event, self);
 
   g_print ("Volume monitor alive\n");
 
@@ -119,7 +119,7 @@ g_vfs_afc_volume_monitor_finalize (GObject *_self)
   if (self->volumes)
     list_free (self->volumes);
 
-  iphone_event_unsubscribe();
+  idevice_event_unsubscribe();
 
   if (G_OBJECT_CLASS(g_vfs_afc_volume_monitor_parent_class)->finalize)
     (*G_OBJECT_CLASS(g_vfs_afc_volume_monitor_parent_class)->finalize)( G_OBJECT(self));
--
cgit v0.8.3.1

0001-Add-AFC-backend.patch:
 configure.ac                                            |   26 
 daemon/Makefile.am                                      |   23 
 daemon/afc.mount.in                                     |    7 
 daemon/gvfsbackendafc.c                                 | 1216 ++++++++++++++++
 daemon/gvfsbackendafc.h                                 |   37 
 monitor/Makefile.am                                     |    6 
 monitor/afc/Makefile.am                                 |   49 
 monitor/afc/afc.monitor                                 |    5 
 monitor/afc/afcvolume.c                                 |  350 ++++
 monitor/afc/afcvolume.h                                 |   44 
 monitor/afc/afcvolumemonitor.c                          |  188 ++
 monitor/afc/afcvolumemonitor.h                          |   39 
 monitor/afc/afcvolumemonitordaemon.c                    |   31 
 monitor/afc/org.gtk.Private.AfcVolumeMonitor.service.in |    5 
 14 files changed, 2023 insertions(+), 3 deletions(-)

Index: 0001-Add-AFC-backend.patch
===================================================================
RCS file: /cvs/extras/rpms/gvfs/F-12/0001-Add-AFC-backend.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- 0001-Add-AFC-backend.patch	14 Aug 2009 14:50:11 -0000	1.2
+++ 0001-Add-AFC-backend.patch	8 Feb 2010 16:44:30 -0000	1.3
@@ -1,7 +1,10 @@
-From 8675a60e030fc91292d19cfd2cd9a6d74dd1776f Mon Sep 17 00:00:00 2001
+From b6fda31fe81820259e432545b052980fa718d817 Mon Sep 17 00:00:00 2001
 From: Bastien Nocera <hadess at hadess.net>
 Date: Thu, 6 Aug 2009 22:55:47 +0100
-Subject: [PATCH] Add AFC backend
+Subject: [PATCH 125/250] =?UTF-8?q?Bug=C2=A0591005=20-=20Add=20AFC=20backend?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
 
 Add a backend based on libiphone to access data on Apple's iPhone,
 and iPod Touch.
@@ -11,22 +14,24 @@ Patrick Walton <pcwalton at cs.ucla.edu>
 Martin Szulecki <opensuse at sukimashita.com>
 Nikias Bassen <nikias at gmx.li>
 Bastien Nocera <hadess at hadess.net>
+
+http://bugzilla.gnome.org/show_bug.cgi?id=591005
 ---
  configure.ac                                       |   26 +-
  daemon/Makefile.am                                 |   23 +
  daemon/afc.mount.in                                |    7 +
- daemon/gvfsbackendafc.c                            | 1228 ++++++++++++++++++++
+ daemon/gvfsbackendafc.c                            | 1216 ++++++++++++++++++++
  daemon/gvfsbackendafc.h                            |   37 +
  monitor/Makefile.am                                |    6 +-
  monitor/afc/Makefile.am                            |   49 +
  monitor/afc/afc.monitor                            |    5 +
- monitor/afc/afcvolume.c                            |  353 ++++++
+ monitor/afc/afcvolume.c                            |  350 ++++++
  monitor/afc/afcvolume.h                            |   44 +
- monitor/afc/afcvolumemonitor.c                     |  224 ++++
+ monitor/afc/afcvolumemonitor.c                     |  188 +++
  monitor/afc/afcvolumemonitor.h                     |   39 +
  monitor/afc/afcvolumemonitordaemon.c               |   31 +
  .../org.gtk.Private.AfcVolumeMonitor.service.in    |    4 +
- 14 files changed, 2074 insertions(+), 2 deletions(-)
+ 14 files changed, 2023 insertions(+), 2 deletions(-)
  create mode 100644 daemon/afc.mount.in
  create mode 100644 daemon/gvfsbackendafc.c
  create mode 100644 daemon/gvfsbackendafc.h
@@ -40,7 +45,7 @@ Bastien Nocera <hadess at hadess.net>
  create mode 100644 monitor/afc/org.gtk.Private.AfcVolumeMonitor.service.in
 
 diff --git a/configure.ac b/configure.ac
-index 9bfb8ad..6b3838c 100644
+index 2db4dcf..84543c5 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -324,6 +324,28 @@ AC_SUBST(CDDA_CFLAGS)
@@ -56,10 +61,10 @@ index 9bfb8ad..6b3838c 100644
 +AFC_CFLAGS=
 +
 +if test "x$enable_afc" != "xno" -a "x$msg_gudev" = "xyes" ; then
-+  PKG_CHECK_EXISTS(libiphone-1.0 >= 0.9.2, msg_afc=yes)
++  PKG_CHECK_EXISTS(libiphone-1.0 >= 0.9.2 libusbmuxd >= 1.0, msg_afc=yes)
 +
 +  if test "x$msg_afc" = "xyes"; then
-+    PKG_CHECK_MODULES(AFC, libiphone-1.0 gudev-1.0)
++    PKG_CHECK_MODULES(AFC, libiphone-1.0 libusbmuxd >= 1.0)
 +    AC_DEFINE(HAVE_AFC, 1, [Define to 1 if AFC is going to be built])
 +  fi
 +fi
@@ -143,10 +148,10 @@ index 0000000..727d833
 +
 diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
 new file mode 100644
-index 0000000..d30ede8
+index 0000000..8c64b0d
 --- /dev/null
 +++ b/daemon/gvfsbackendafc.c
-@@ -0,0 +1,1228 @@
+@@ -0,0 +1,1216 @@
 +/*
 + * gvfs/daemon/gvfsbackendafc.c
 + *
@@ -165,8 +170,6 @@ index 0000000..d30ede8
 +#include <glib/gi18n.h>
 +#include <errno.h>
 +
-+#include <gudev/gudev.h>
-+
 +#include <libiphone/libiphone.h>
 +#include <libiphone/lockdown.h>
 +#include <libiphone/afc.h>
@@ -192,8 +195,6 @@ index 0000000..d30ede8
 +struct _GVfsBackendAfc {
 +  GVfsBackend backend;
 +
-+  GUdevClient *client;
-+
 +  char uuid[41];
 +  char *service;
 +  char *model;
@@ -371,27 +372,22 @@ index 0000000..d30ede8
 +}
 +
 +static void
-+_uevent_cb (GUdevClient  *client,
-+            const gchar  *action,
-+            GUdevDevice  *device,
-+            gpointer      user_data)
++_usbmuxd_event_cb (const usbmuxd_event_t *event, void *user_data)
 +{
 +  GVfsBackendAfc *afc_backend = G_VFS_BACKEND_AFC (user_data);
-+  const char *uuid;
 +
 +  g_return_if_fail (afc_backend->uuid != NULL);
-+
-+  if (g_str_equal (action, "remove") == FALSE)
++  if (event->event != UE_DEVICE_REMOVE)
 +    return;
-+  uuid = g_udev_device_get_property (device, "ID_SERIAL_SHORT");
-+  if (uuid == NULL ||
-+      g_str_equal (uuid, afc_backend->uuid) == FALSE)
++  if (g_str_equal (event->device.uuid, afc_backend->uuid) == FALSE)
 +    return;
 +
 +  g_print ("Shutting down AFC backend for device uuid %s\n", afc_backend->uuid);
 +
 +  g_vfs_backend_afc_close_connection (afc_backend);
 +
++  usbmuxd_unsubscribe();
++
 +  /* TODO: need a cleaner way to force unmount ourselves */
 +  exit (1);
 +}
@@ -413,13 +409,10 @@ index 0000000..d30ede8
 +  int retries;
 +  iphone_error_t err;
 +  lockdownd_client_t lockdown_cli = NULL;
-+  const gchar * const subsystems[] = { "usb", NULL };
 +
 +  self = G_VFS_BACKEND_AFC(backend);
 +  self->connected = FALSE;
-+  self->client = g_udev_client_new (subsystems);
-+  g_signal_connect (G_OBJECT (self->client), "uevent",
-+                    G_CALLBACK (_uevent_cb), self);
++  usbmuxd_subscribe (_usbmuxd_event_cb, self);
 +
 +  /* setup afc */
 +
@@ -431,7 +424,7 @@ index 0000000..d30ede8
 +                        _("Invalid mount spec"));
 +      return;
 +    }
-+  if (G_UNLIKELY(sscanf(str, "%40s", &self->uuid) < 1))
++  if (G_UNLIKELY(sscanf(str, "%40s", (char *) &self->uuid) < 1))
 +    {
 +      g_vfs_job_failed (G_VFS_JOB(job), G_IO_ERROR, G_IO_ERROR_FAILED,
 +                        _("Invalid AFC location: must be in the form of "
@@ -462,7 +455,7 @@ index 0000000..d30ede8
 +  g_free (display_name);
 +
 +  real_spec = g_mount_spec_new ("afc");
-+  tmp = g_strdup_printf ("%40s", &self->uuid);
++  tmp = g_strdup_printf ("%40s", (char *) &self->uuid);
 +  g_mount_spec_set (real_spec, "host", tmp);
 +  g_free (tmp);
 +
@@ -1504,10 +1497,10 @@ index 0000000..1663573
 +
 diff --git a/monitor/afc/afcvolume.c b/monitor/afc/afcvolume.c
 new file mode 100644
-index 0000000..688f75b
+index 0000000..0e3c65e
 --- /dev/null
 +++ b/monitor/afc/afcvolume.c
-@@ -0,0 +1,353 @@
+@@ -0,0 +1,350 @@
 +/*
 + * gvfs/monitor/afc/afc-volume.c
 + *
@@ -1545,11 +1538,11 @@ index 0000000..688f75b
 +                       G_IMPLEMENT_INTERFACE(G_TYPE_VOLUME, g_vfs_afc_volume_iface_init))
 +
 +static void
-+g_vfs_afc_volume_finalize (GObject *self_)
++g_vfs_afc_volume_finalize (GObject *object)
 +{
 +  GVfsAfcVolume *self;
 +
-+  self = G_VFS_AFC_VOLUME(self);
++  self = G_VFS_AFC_VOLUME(object);
 +
 +  g_free (self->uuid);
 +
@@ -1805,9 +1798,6 @@ index 0000000..688f75b
 +
 +  res = g_ptr_array_new ();
 +
-+  g_ptr_array_add (res,
-+                   g_strdup (G_VOLUME_IDENTIFIER_KIND_HAL_UDI));
-+
 +  if (afc_volume->uuid && *afc_volume->uuid != 0)
 +    {
 +        g_ptr_array_add (res,
@@ -1913,10 +1903,10 @@ index 0000000..de24cd5
 + */
 diff --git a/monitor/afc/afcvolumemonitor.c b/monitor/afc/afcvolumemonitor.c
 new file mode 100644
-index 0000000..93926eb
+index 0000000..e0de6ef
 --- /dev/null
 +++ b/monitor/afc/afcvolumemonitor.c
-@@ -0,0 +1,224 @@
+@@ -0,0 +1,188 @@
 +/*
 + * gvfs/monitor/afc/afc-volume-monitor.c
 + *
@@ -1929,14 +1919,12 @@ index 0000000..93926eb
 +#include <gvfsproxyvolumemonitordaemon.h>
 +#include <stdio.h>
 +#include <gio/gio.h>
-+#define G_UDEV_API_IS_SUBJECT_TO_CHANGE
-+#include <gudev/gudev.h>
++#include <usbmuxd.h>
 +#include "afcvolume.h"
 +#include "afcvolumemonitor.h"
 +
 +struct _GVfsAfcVolumeMonitor {
 +  GNativeVolumeMonitor parent;
-+  GUdevClient *client;
 +  GList *volumes;
 +};
 +
@@ -1990,35 +1978,18 @@ index 0000000..93926eb
 +}
 +
 +static void
-+g_vfs_afc_monitor_uevent (GUdevClient  *client,
-+                          const gchar  *action,
-+                          GUdevDevice  *device,
-+                          gpointer      user_data)
++g_vfs_afc_monitor_usbmuxd_event (const usbmuxd_event_t *event, void *user_data)
 +{
 +  GVfsAfcVolumeMonitor *self;
-+  const char *vendor, *uuid;
 +
-+  self = G_VFS_AFC_VOLUME_MONITOR(user_data);
-+
-+  /* Vendor is Apple? */
-+  vendor = g_udev_device_get_property (device, "ID_VENDOR");
-+  if (vendor == NULL ||
-+      g_str_equal (vendor, "Apple_Inc.") == FALSE) {
-+    return;
-+  }
++  g_return_if_fail (event != NULL);
 +
-+  /* Get us a UUID */
-+  uuid = g_udev_device_get_property (device, "ID_SERIAL_SHORT");
-+  if (uuid == NULL)
-+    {
-+      g_message ("No serial for device");
-+      return;
-+    }
++  self = G_VFS_AFC_VOLUME_MONITOR(user_data);
 +
-+  if (g_str_equal (action, "add") != FALSE)
-+    g_vfs_afc_monitor_create_volume (self, uuid);
-+  else if (g_str_equal (action, "remove") != FALSE)
-+    g_vfs_afc_monitor_remove_volume (self, uuid);
++  if (event->event == UE_DEVICE_ADD)
++    g_vfs_afc_monitor_create_volume (self, event->device.uuid);
++  else
++    g_vfs_afc_monitor_remove_volume (self, event->device.uuid);
 +}
 +
 +static GObject *
@@ -2026,26 +1997,13 @@ index 0000000..93926eb
 +                                      GObjectConstructParam *cps)
 +{
 +  GVfsAfcVolumeMonitor *self;
-+  GList *devices, *l;
-+  const gchar * const subsystems[] = { "usb", NULL };
 +
 +  /* Boilerplate code to chain from parent. */
 +  self = G_VFS_AFC_VOLUME_MONITOR((*G_OBJECT_CLASS(g_vfs_afc_volume_monitor_parent_class)->constructor)(type, ncps, cps));
 +
-+  self->client = g_udev_client_new (subsystems);
-+  g_signal_connect (G_OBJECT (self->client), "uevent",
-+                    G_CALLBACK (g_vfs_afc_monitor_uevent), self);
-+
 +  self->volumes = NULL;
 +
-+  devices = g_udev_client_query_by_subsystem (self->client, subsystems[0]);
-+  for (l = devices; l != NULL; l = l->next)
-+    {
-+      GUdevDevice *device = l->data;
-+      g_vfs_afc_monitor_uevent (self->client, "add", device, self);
-+      g_object_unref (device);
-+    }
-+  g_list_free (devices);
++  usbmuxd_subscribe(g_vfs_afc_monitor_usbmuxd_event, self);
 +
 +  g_print ("Volume monitor alive\n");
 +
@@ -2066,15 +2024,11 @@ index 0000000..93926eb
 +
 +  self = G_VFS_AFC_VOLUME_MONITOR(_self);
 +
++  usbmuxd_unsubscribe();
++
 +  if (self->volumes)
 +    list_free (self->volumes);
 +
-+  if (self->client)
-+    {
-+      g_object_unref (self->client);
-+      self->client = NULL;
-+    }
-+
 +  if (G_OBJECT_CLASS(g_vfs_afc_volume_monitor_parent_class)->finalize)
 +    (*G_OBJECT_CLASS(g_vfs_afc_volume_monitor_parent_class)->finalize)( G_OBJECT(self));
 +}
@@ -2234,5 +2188,5 @@ index 0000000..4e6bd33
 +Exec=@libexecdir@/gvfs-afc-volume-monitor
 +
 -- 
-1.6.2.5
+1.6.6.1
 


Index: gvfs.spec
===================================================================
RCS file: /cvs/extras/rpms/gvfs/F-12/gvfs.spec,v
retrieving revision 1.180
retrieving revision 1.181
diff -u -p -r1.180 -r1.181
--- gvfs.spec	8 Feb 2010 15:05:25 -0000	1.180
+++ gvfs.spec	8 Feb 2010 16:44:31 -0000	1.181
@@ -54,6 +54,24 @@ Patch21: gvfs-1.5.2-ftp-separate-data-co
 Patch22: gvfs-1.5.2-ftp-PASV-v4.patch
 Patch23: gvfs-1.5.2-ftp-PASV-EPASV-v4-v6.patch
 
+# AFC patches from upstream
+Patch30: gvfs-1.4.1-afc-hide-dot-files.patch
+Patch31: gvfs-1.4.1-afc-fast-mime.patch
+Patch32: gvfs-1.4.1-afc-st_mtime.patch
+Patch33: gvfs-1.4.1-afc-latest-libiphone-api.patch
+Patch34: gvfs-1.4.1-afc-no-libgudev-dependency.patch
+Patch35: gvfs-1.4.1-afc-mtime-setting.patch
+Patch36: gvfs-1.4.1-afc-mtime-pre-3.1-devices.patch
+Patch37: gvfs-1.4.1-afc-dont-leak-volumes.patch
+Patch38: gvfs-1.4.1-afc-fix-mtime-setting.patch
+Patch39: gvfs-1.4.1-afc-thumbnails.patch
+Patch40: gvfs-1.4.1-afc-x-content-types.patch
+Patch41: gvfs-1.4.1-afc-preview-icon.patch
+Patch42: gvfs-1.4.1-afc-shadowed-mount.patch
+Patch43: gvfs-1.4.1-afc-indentation.patch
+Patch44: gvfs-1.5.3-afc-new-libiphone.patch
+Patch45: gvfs-1.5.3-use-libimobiledevice.patch
+
 
 Obsoletes: gnome-mount <= 0.8
 Obsoletes: gnome-mount-nautilus-properties <= 0.8
@@ -140,11 +158,11 @@ Summary: AFC support for gvfs
 Group: System Environment/Libraries
 Requires: %{name} = %{version}-%{release}
 Requires: usbmuxd
-BuildRequires: libiphone-devel >= 0.9.2
+BuildRequires: libimobiledevice-devel >= 0.9.7
 
 %description afc
-This package provides support for reading files on Apple iPhones and
-and iPod Touches to applications using gvfs.
+This package provides support for reading files on mobile devices
+including phones and music players to applications using gvfs.
 
 
 %prep
@@ -164,6 +182,23 @@ and iPod Touches to applications using g
 %patch22 -p1 -b .ftp-PASV-v4
 %patch23 -p1 -b .ftp-PASV-EPASV-v4-v6
 
+%patch30 -p1 -b .afc-hide-dot-files.patch
+%patch31 -p1 -b .afc-fast-mime.patch
+%patch32 -p1 -b .afc-st_mtime.patch
+%patch33 -p1 -b .afc-latest-libiphone-api.patch
+%patch34 -p1 -b .afc-no-libgudev-dependency.patch
+%patch35 -p1 -b .afc-mtime-setting.patch
+%patch36 -p1 -b .afc-mtime-pre-3.1-devices.patch
+%patch37 -p1 -b .afc-dont-leak-volumes.patch
+%patch38 -p1 -b .afc-fix-mtime-setting.patch
+%patch39 -p1 -b .afc-thumbnails.patch
+%patch40 -p1 -b .afc-x-content-types.patch
+%patch41 -p1 -b .afc-preview-icon.patch
+%patch42 -p1 -b .afc-shadowed-mount.patch
+%patch43 -p1 -b .afc-indentation.patch
+%patch44 -p1 -b .afc-new-libiphone.patch
+%patch45 -p1 -b .use-libimobiledevice.patch
+
 %build
 
 # Needed for gvfs-0.2.1-archive-integration.patch
@@ -329,7 +364,8 @@ killall -USR1 gvfsd >&/dev/null || :
 
 %changelog
 * Mon Feb  8 2010 Tomas Bzatek <tbzatek at redhat.com> - 1.4.3-5
-- ftp: backport several PASV/EPSV fixes from master (#542205)
+- ftp: backport several PASV/EPSV fixes from master (#542205, #555033)
+- AFC: Use new libimobiledevice library
 
 * Wed Feb  3 2010 Tomas Bzatek <tbzatek at redhat.com> - 1.4.3-4
 - archive: fix assertion on finalize (#557545)



More information about the scm-commits mailing list