rpms/gvfs/devel 0001-Add-AFC-backend.patch, NONE, 1.1 gvfs.spec, 1.143, 1.144
Bastien Nocera
hadess at fedoraproject.org
Tue Aug 11 09:11:04 UTC 2009
Author: hadess
Update of /cvs/pkgs/rpms/gvfs/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv10792
Modified Files:
gvfs.spec
Added Files:
0001-Add-AFC-backend.patch
Log Message:
* Tue Aug 11 2009 Bastien Nocera <bnocera at redhat.com> 1.3.4-2
- Add AFC backend
0001-Add-AFC-backend.patch:
configure.ac | 26
daemon/Makefile.am | 23
daemon/afc.mount.in | 7
daemon/gvfsbackendafc.c | 1226 ++++++++++++++++
daemon/gvfsbackendafc.h | 37
monitor/Makefile.am | 6
monitor/afc/Makefile.am | 49
monitor/afc/afc.monitor | 5
monitor/afc/afcvolume.c | 336 ++++
monitor/afc/afcvolume.h | 44
monitor/afc/afcvolumemonitor.c | 215 ++
monitor/afc/afcvolumemonitor.h | 39
monitor/afc/afcvolumemonitordaemon.c | 31
monitor/afc/org.gtk.Private.AfcVolumeMonitor.service.in | 5
14 files changed, 2046 insertions(+), 3 deletions(-)
--- NEW FILE 0001-Add-AFC-backend.patch ---
>From 1ba08909cdc395c14116d7cdf0f8f3442ba5e4c0 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
Add a backend based on libiphone to access data on Apple's iPhone,
and iPod Touch.
Code by:
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>
---
configure.ac | 26 +-
daemon/Makefile.am | 23 +
daemon/afc.mount.in | 7 +
daemon/gvfsbackendafc.c | 1226 ++++++++++++++++++++
daemon/gvfsbackendafc.h | 37 +
monitor/Makefile.am | 6 +-
monitor/afc/Makefile.am | 49 +
monitor/afc/afc.monitor | 5 +
monitor/afc/afcvolume.c | 336 ++++++
monitor/afc/afcvolume.h | 44 +
monitor/afc/afcvolumemonitor.c | 215 ++++
monitor/afc/afcvolumemonitor.h | 39 +
monitor/afc/afcvolumemonitordaemon.c | 31 +
.../org.gtk.Private.AfcVolumeMonitor.service.in | 4 +
14 files changed, 2046 insertions(+), 2 deletions(-)
create mode 100644 daemon/afc.mount.in
create mode 100644 daemon/gvfsbackendafc.c
create mode 100644 daemon/gvfsbackendafc.h
create mode 100644 monitor/afc/Makefile.am
create mode 100644 monitor/afc/afc.monitor
create mode 100644 monitor/afc/afcvolume.c
create mode 100644 monitor/afc/afcvolume.h
create mode 100644 monitor/afc/afcvolumemonitor.c
create mode 100644 monitor/afc/afcvolumemonitor.h
create mode 100644 monitor/afc/afcvolumemonitordaemon.c
create mode 100644 monitor/afc/org.gtk.Private.AfcVolumeMonitor.service.in
diff --git a/configure.ac b/configure.ac
index 7f1ec16..4675ae9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -324,6 +324,28 @@ AC_SUBST(CDDA_CFLAGS)
AM_CONDITIONAL(USE_CDDA, [test "$msg_cdda" = "yes"])
+dnl *************************************************
+dnl *** Check if we should build with AFC backend ***
+dnl *************************************************
+AC_ARG_ENABLE(afc, [ --disable-afc build without AFC backend])
+msg_afc=no
+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, msg_afc=yes)
+
+ if test "x$msg_afc" = "xyes"; then
+ PKG_CHECK_MODULES(AFC, libiphone-1.0 gudev-1.0)
+ AC_DEFINE(HAVE_AFC, 1, [Define to 1 if AFC is going to be built])
+ fi
+fi
+
+AC_SUBST(AFC_LIBS)
+AC_SUBST(AFC_CFLAGS)
+
+AM_CONDITIONAL(USE_AFC, [test "$msg_afc" = "yes"])
+
dnl *****************************************************
dnl *** Check if we should build with obexftp backend ***
dnl *****************************************************
@@ -695,6 +717,7 @@ monitor/proxy/Makefile
monitor/hal/Makefile
monitor/gdu/Makefile
monitor/gphoto2/Makefile
+monitor/afc/Makefile
gconf/Makefile
programs/Makefile
test/Makefile
@@ -712,7 +735,8 @@ echo "
FUSE support: $msg_fuse
CDDA support: $msg_cdda
Gphoto2 support: $msg_gphoto2
- archive support: $msg_archive
+ archive support: $msg_archive
+ AFC support: $msg_afc
GConf support: $msg_gconf
DNS-SD support: $msg_avahi
Build HAL volume monitor: $msg_hal (with fast init path: $have_hal_fast_init)
diff --git a/daemon/Makefile.am b/daemon/Makefile.am
index 733fa41..4c9e4af 100644
--- a/daemon/Makefile.am
+++ b/daemon/Makefile.am
@@ -101,6 +101,12 @@ mount_DATA += archive.mount
libexec_PROGRAMS += gvfsd-archive
endif
+mount_in_files += afc.mount.in
+if USE_AFC
+mount_DATA += afc.mount
+libexec_PROGRAMS += gvfsd-afc
+endif
+
EXTRA_DIST = gvfs-daemon.service.in $(mount_in_files) obexftp-marshal.list
DISTCLEANFILES = gvfs-daemon.service $(mount_DATA)
@@ -433,3 +439,20 @@ gvfsd_dav_LDADD = $(libraries) $(HTTP_LIBS)
if HAVE_AVAHI
gvfsd_dav_LDADD += $(top_builddir)/common/libgvfscommon-dnssd.la
endif
+
+gvfsd_afc_SOURCES = \
+ gvfsbackendafc.c gvfsbackendafc.h \
+ daemon-main.c daemon-main.h \
+ daemon-main-generic.c
+
+gvfsd_afc_CPPFLAGS = \
+ -DBACKEND_HEADER=gvfsbackendafc.h \
+ -DDEFAULT_BACKEND_TYPE=afc \
+ -DMAX_JOB_THREADS=1 \
+ $(AFC_CFLAGS) \
+ -DBACKEND_TYPES='"afc", G_VFS_TYPE_BACKEND_AFC,'
+
+gvfsd_afc_LDADD = \
+ $(libraries) \
+ $(AFC_LIBS)
+
diff --git a/daemon/afc.mount.in b/daemon/afc.mount.in
new file mode 100644
index 0000000..727d833
--- /dev/null
+++ b/daemon/afc.mount.in
@@ -0,0 +1,7 @@
+[Mount]
+Type=afc
+Exec=@libexecdir@/gvfsd-afc
+AutoMount=false
+Scheme=afc
+DefaultPort=1
+
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
new file mode 100644
index 0000000..97d0a22
--- /dev/null
+++ b/daemon/gvfsbackendafc.c
@@ -0,0 +1,1226 @@
+/*
+ * gvfs/daemon/gvfsbackendafc.c
+ *
+ * Copyright (c) 2008 Patrick Walton <pcwalton at cs.ucla.edu>
+ */
+
+#include <config.h>
+
+#include <limits.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <glib/gi18n.h>
+#include <errno.h>
+
+#define G_UDEV_API_IS_SUBJECT_TO_CHANGE
+#include <gudev/gudev.h>
+
+#include <libiphone/libiphone.h>
+#include <libiphone/lockdown.h>
+#include <libiphone/afc.h>
+
+#include "gvfsbackendafc.h"
+#include "gvfsjobopenforread.h"
+#include "gvfsjobread.h"
+#include "gvfsjobseekread.h"
+#include "gvfsjobopenforwrite.h"
+#include "gvfsjobwrite.h"
+#include "gvfsjobseekwrite.h"
+#include "gvfsjobsetdisplayname.h"
+#include "gvfsjobqueryinfo.h"
+#include "gvfsjobqueryfsinfo.h"
+#include "gvfsjobqueryattributes.h"
+#include "gvfsjobenumerate.h"
+#include "gvfsdaemonprotocol.h"
+#include "gvfsdaemonutils.h"
+
+#define G_VFS_BACKEND_AFC_MAX_FILE_SIZE G_MAXINT64
+int g_blocksize = 4096; /* assume this is the default block size */
+
+struct _GVfsBackendAfc {
+ GVfsBackend backend;
+
+ GUdevClient *client;
+
+ char uuid[41];
+ char *service;
[...1811 lines suppressed...]
+g_vfs_afc_volume_monitor_constructor (GType type, guint ncps,
+ GObjectConstructParam *cps)
+{
+ GVfsAfcVolumeMonitor *self;
+ GList *devices, *l;
+ const gchar * const subsystems[] = { "usb_endpoint", 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);
+
+ g_print ("Volume monitor alive\n");
+
+ return G_OBJECT(self);
+}
+
+static void
+list_free (GList *objects)
+{
+ g_list_foreach (objects, (GFunc)g_object_unref, NULL);
+ g_list_free (objects);
+}
+
+static void
+g_vfs_afc_volume_monitor_finalize (GObject *_self)
+{
+ GVfsAfcVolumeMonitor *self;
+
+ self = G_VFS_AFC_VOLUME_MONITOR(_self);
+
+ 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));
+}
+
+static GList *
+g_vfs_afc_volume_monitor_get_volumes (GVolumeMonitor *_self)
+{
+ GVfsAfcVolumeMonitor *self;
+ GList *l;
+
+ self = G_VFS_AFC_VOLUME_MONITOR (_self);
+
+ l = g_list_copy (self->volumes);
+ g_list_foreach (l, (GFunc)g_object_ref, NULL);
+
+ return l;
+}
+
+static gboolean
+g_vfs_afc_volume_monitor_is_supported (void)
+{
+ return TRUE;
+}
+
+static void
+g_vfs_afc_volume_monitor_class_init (GVfsAfcVolumeMonitorClass * klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
+ GVolumeMonitorClass *monitor_class = G_VOLUME_MONITOR_CLASS(klass);
+
+ gobject_class->constructor = g_vfs_afc_volume_monitor_constructor;
+ gobject_class->finalize = g_vfs_afc_volume_monitor_finalize;
+
+ monitor_class->get_volumes = g_vfs_afc_volume_monitor_get_volumes;
+ monitor_class->is_supported = g_vfs_afc_volume_monitor_is_supported;
+}
+
+static void
+g_vfs_afc_volume_monitor_init(GVfsAfcVolumeMonitor *self)
+{
+}
+
+GVolumeMonitor *
+g_vfs_afc_volume_monitor_new (void)
+{
+ return G_VOLUME_MONITOR(g_object_new (G_VFS_TYPE_AFC_VOLUME_MONITOR,
+ NULL));
+}
+
+/*
+ * vim: sw=2 ts=8 cindent expandtab cinoptions=f0,>4,n2,{2,(0,^-2,t0 ai
+ */
diff --git a/monitor/afc/afcvolumemonitor.h b/monitor/afc/afcvolumemonitor.h
new file mode 100644
index 0000000..0bd5f32
--- /dev/null
+++ b/monitor/afc/afcvolumemonitor.h
@@ -0,0 +1,39 @@
+/*
+ * gvfs/monitor/afc/afc-volume-monitor.h
+ *
+ * Copyright (c) 2008 Patrick Walton <pcwalton at ucla.edu>
+ */
+
+#ifndef AFC_VOLUME_MONITOR_H
+#define AFC_VOLUME_MONITOR_H
+
+#include <glib-object.h>
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define G_VFS_TYPE_AFC_VOLUME_MONITOR (g_vfs_afc_volume_monitor_get_type())
+#define G_VFS_AFC_VOLUME_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST((o), G_VFS_TYPE_AFC_VOLUME_MONITOR, GVfsAfcVolumeMonitor))
+#define G_VFS_AFC_VOLUME_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_VFS_TYPE_AFC_VOLUME_MONITOR, GVfsAfcVolumeMonitorClass))
+#define G_VFS_IS_AFC_VOLUME_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), G_VFS_TYPE_AFC_VOLUME_MONITOR))
+#define G_VFS_IS_AFC_VOLUME_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), G_VFS_TYPE_AFC_VOLUME_MONITOR))
+#define G_VFS_AFC_VOLUME_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), G_VFS_TYPE_AFC_VOLUME_MONITOR, GVfsAfcVolumeMonitorClass))
+
+typedef struct _GVfsAfcVolumeMonitor GVfsAfcVolumeMonitor;
+typedef struct _GVfsAfcVolumeMonitorClass GVfsAfcVolumeMonitorClass;
+
+struct _GVfsAfcVolumeMonitorClass {
+ GVolumeMonitorClass parent_class;
+};
+
+GType g_vfs_afc_volume_monitor_get_type (void) G_GNUC_CONST;
+
+GVolumeMonitor *g_vfs_afc_volume_monitor_new (void);
+
+G_END_DECLS
+
+#endif /* AFC_VOLUME_MONITOR_H */
+
+/*
+ * vim: sw=2 ts=8 cindent expandtab cinoptions=f0,>4,n2,{2,(0,^-2,t0 ai
+ */
diff --git a/monitor/afc/afcvolumemonitordaemon.c b/monitor/afc/afcvolumemonitordaemon.c
new file mode 100644
index 0000000..9c24a34
--- /dev/null
+++ b/monitor/afc/afcvolumemonitordaemon.c
@@ -0,0 +1,31 @@
+/*
+ * gvfs/monitor/afc/afc-volume-monitor-daemon.c
+ *
+ * Copyright (c) 2008-2009 Patrick Walton <pcwalton at ucla.edu>
+ * Copyright (c) 2009 Martin Szulecki <opensuse at sukimashita.com>
+ */
+
+#include <config.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gmodule.h>
+#include <gio/gio.h>
+
+#include <gvfsproxyvolumemonitordaemon.h>
+
+#include "afcvolumemonitor.h"
+
+int
+main (int argc, char *argv[])
+{
+ g_vfs_proxy_volume_monitor_daemon_init ();
+ return g_vfs_proxy_volume_monitor_daemon_main (argc,
+ argv,
+ "org.gtk.Private.AfcVolumeMonitor",
+ G_VFS_TYPE_AFC_VOLUME_MONITOR);
+}
+
+/*
+ * vim: sw=2 ts=8 cindent expandtab cinoptions=f0,>4,n2,{2,(0,^-2,t0 ai
+ */
diff --git a/monitor/afc/org.gtk.Private.AfcVolumeMonitor.service.in b/monitor/afc/org.gtk.Private.AfcVolumeMonitor.service.in
new file mode 100644
index 0000000..4e6bd33
--- /dev/null
+++ b/monitor/afc/org.gtk.Private.AfcVolumeMonitor.service.in
@@ -0,0 +1,4 @@
+[D-BUS Service]
+Name=org.gtk.Private.AfcVolumeMonitor
+Exec=@libexecdir@/gvfs-afc-volume-monitor
+
--
1.6.2.5
Index: gvfs.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gvfs/devel/gvfs.spec,v
retrieving revision 1.143
retrieving revision 1.144
diff -u -p -r1.143 -r1.144
--- gvfs.spec 10 Aug 2009 17:05:22 -0000 1.143
+++ gvfs.spec 11 Aug 2009 09:11:04 -0000 1.144
@@ -1,7 +1,7 @@
Summary: Backends for the gio framework in GLib
Name: gvfs
Version: 1.3.4
-Release: 1%{?dist}
+Release: 2%{?dist}
License: LGPLv2+
Group: System Environment/Libraries
URL: http://www.gtk.org
@@ -41,7 +41,8 @@ Patch4: gvfs-1.3.4-dont-strip-mount-pref
Patch8: gvfs-1.2.2-dnssd-deadlock.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=504339
Patch9: gvfs-1.2.3-sftp-40sec-timeout.patch
-
+# http://bugzilla.gnome.org/show_bug.cgi?id=591005
+Patch10: 0001-Add-AFC-backend.patch
%description
The gvfs package provides backend implementations for the gio
@@ -119,7 +120,16 @@ This package provides support for readin
PTP based cameras (Picture Transfer Protocol) and MTP based
media players (Media Transfer Protocol) to applications using gvfs.
+%package afc
+Summary: AFC support for gvfs
+Group: System Environment/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: usbmuxd
+BuildRequires: libiphone-devel >= 0.9.2 libgudev-devel
+%description afc
+This package provides support for reading files on Apple iPhones and
+and iPod Touches to applications using gvfs.
%prep
@@ -128,6 +138,7 @@ media players (Media Transfer Protocol)
%patch4 -p1 -b .mount-prefix
%patch8 -p1 -b .dnssd-deadlock
%patch9 -p1 -b .sftp-timeout
+%patch10 -p1 -b .afc
%build
@@ -272,8 +283,18 @@ update-desktop-database &> /dev/null ||:
%{_datadir}/dbus-1/services/org.gtk.Private.GPhoto2VolumeMonitor.service
%{_datadir}/gvfs/remote-volume-monitors/gphoto2.monitor
+%files afc
+%defattr(-, root, root, -)
+%{_libexecdir}/gvfsd-afc
+%{_datadir}/gvfs/mounts/afc.mount
+%{_libexecdir}/gvfs-afc-volume-monitor
+%{_datadir}/dbus-1/services/org.gtk.Private.AFCVolumeMonitor.service
+%{_datadir}/gvfs/remote-volume-monitors/afc.monitor
%changelog
+* Tue Aug 11 2009 Bastien Nocera <bnocera at redhat.com> 1.3.4-2
+- Add AFC backend
+
* Mon Aug 10 2009 Matthias Clasen <mclasen at redhat.com> - 1.3.4-1
- Update to 1.3.4
More information about the fedora-extras-commits
mailing list