gvfs r1649 - in trunk: . daemon po
- From: alexl svn gnome org
- To: svn-commits-list gnome org
- Subject: gvfs r1649 - in trunk: . daemon po
- Date: Wed, 12 Mar 2008 16:34:01 +0000 (GMT)
Author: alexl
Date: Wed Mar 12 16:34:01 2008
New Revision: 1649
URL: http://svn.gnome.org/viewvc/gvfs?rev=1649&view=rev
Log:
2008-03-12 Alexander Larsson <alexl redhat com>
* configure.ac:
* daemon/Makefile.am:
* daemon/gvfsbackendarchive.[ch]:
Added archive backend from Benjamin Otte
Requires libarchive
Modified:
trunk/ChangeLog
trunk/configure.ac
trunk/daemon/gvfsbackendarchive.c
trunk/po/ChangeLog
trunk/po/POTFILES.in
Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac (original)
+++ trunk/configure.ac Wed Mar 12 16:34:01 2008
@@ -401,7 +401,69 @@
AM_CONDITIONAL(HAVE_SAMBA, test "$msg_samba" = "yes")
AC_SUBST(SAMBA_CFLAGS)
AC_SUBST(SAMBA_LIBS)
+
+dnl ==========================================================================
+
+dnl ****************************
+dnl *** Check for libarchive ***
+dnl ****************************
+
+AC_ARG_ENABLE(archive, [ --disable-archive build without archive support])
+msg_archive="no"
+if test "x$enable_archive" != "xno"; then
+ AC_ARG_WITH(archive-includes, [ --with-archive-includes=PREFIX Location of archive includes.],
+ with_archive_includes="$withval", with_archive_includes="/usr/include")
+ have_archive_includes="no"
+ if test "x${with_archive_includes}" != "xno"; then
+ CPPFLAGS_save="$CPPFLAGS"
+
+ CPPFLAGS="$CPPFLAGS -I$with_archive_includes"
+ AC_CHECK_HEADER(archive.h, [ archive_includes="yes" ])
+ CPPFLAGS="$CPPFLAGS_save"
+
+ if test "x{archive_includes}" != "xno" -a "x${archive_includes}" != "x"; then
+ have_archive_includes="yes"
+ if test "${with_archive_includes}" != "/usr/include" ; then
+ ARCHIVE_CFLAGS="-I$with_archive_includes"
+ else
+ ARCHIVE_CFLAGS=""
+ fi
+ else
+ ARCHIVE_CFLAGS=""
+ fi
+ fi
+ AC_ARG_WITH(archive-libs, [ --with-archive-libs=PREFIX Location of Archive libs.],
+ with_archive_libs="$withval", with_archive_libs="/usr/lib")
+ if test "x${with_archive_libs}" != "xno" -a "x${have_archive_includes}" != "xno"; then
+ LDFLAGS_save="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -L$with_archive_libs"
+ AC_CHECK_LIB(archive, archive_read_open, archive_libs="yes", archive_libs="no")
+ LDFLAGS="$LDFLAGS_save"
+ if test "x${archive_libs}" != "xno"; then
+ AC_DEFINE(HAVE_ARCHIVE,, [Define to 1 if you have the libarchive library])
+ msg_archive="yes"
+ if test x$with_archive_libs != x/usr/lib; then
+ ARCHIVE_LIBS="-L$with_archive_libs -larchive"
+ else
+ ARCHIVE_LIBS="-larchive"
+ fi
+ else
+ AC_CHECK_LIB(archive, archive_read_open, archive_old_libs="yes", archive_old_libs="no")
+ if test "x${archive_old_libs}" != "xno"; then
+ msg_archive="Too old, need at least archive 3.0.22"
+ fi
+ ARCHIVE_CFLAGS=""
+ ARCHIVE_LIBS=""
+ fi
+ fi
+ AC_MSG_CHECKING(for Archive 3.libraries)
+ AC_MSG_RESULT($msg_archive)
+fi
+AM_CONDITIONAL(HAVE_ARCHIVE, test "$msg_archive" = "yes")
+AC_SUBST(ARCHIVE_CFLAGS)
+AC_SUBST(ARCHIVE_LIBS)
+
dnl ==========================================================================
dnl Globally define_GNU_SOURCE and therefore enable the GNU extensions
@@ -478,6 +540,7 @@
FUSE support: $msg_fuse
CDDA support: $msg_cdda
Gphoto2 support: $msg_gphoto2
+ archive support: $msg_archive
GConf support: $msg_gconf
DNS-SD support: $msg_avahi
Use HAL for volume monitor: $msg_hal (with fast init path: $have_hal_fast_init)
Modified: trunk/daemon/gvfsbackendarchive.c
==============================================================================
--- trunk/daemon/gvfsbackendarchive.c (original)
+++ trunk/daemon/gvfsbackendarchive.c Wed Mar 12 16:34:01 2008
@@ -25,6 +25,7 @@
#include <config.h>
#include <glib/gi18n.h>
+#include <string.h>
#include <archive.h>
#include <archive_entry.h>
@@ -472,14 +473,16 @@
gboolean is_automount)
{
GVfsBackendArchive *archive = G_VFS_BACKEND_ARCHIVE (backend);
- const char *host;
+ const char *host, *file;
GFileInfo *info;
GIcon *icon;
char *filename, *s;
GError *error = NULL;
host = g_mount_spec_get (mount_spec, "host");
- if (host == NULL)
+ file = g_mount_spec_get (mount_spec, "file");
+ if (host == NULL &&
+ file == NULL)
{
g_vfs_job_failed (G_VFS_JOB (job),
G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
@@ -487,20 +490,25 @@
return;
}
- filename = g_uri_unescape_string (host, NULL);
- if (filename == NULL)
+ if (host != NULL)
{
- g_vfs_job_failed (G_VFS_JOB (job),
- G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
- _("Invalid mount spec"));
- return;
+ filename = g_uri_unescape_string (host, NULL);
+ if (filename == NULL)
+ {
+ g_vfs_job_failed (G_VFS_JOB (job),
+ G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
+ _("Invalid mount spec"));
+ return;
+ }
+
+ archive->file = g_file_new_for_uri (filename);
+ g_free (filename);
}
- DEBUG ("Trying to mount %s\n", filename);
-
- archive->file = g_file_new_for_uri (filename);
- g_free (filename);
+ else
+ archive->file = g_file_new_for_uri (file);
+
+ DEBUG ("Trying to mount %s\n", g_file_get_uri (archive->file));
- /* FIXME: check if this file is an archive */
info = g_file_query_info (archive->file,
"*",
G_FILE_QUERY_INFO_NONE,
@@ -514,6 +522,16 @@
return;
}
+ if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR)
+ {
+ g_vfs_job_failed (G_VFS_JOB (job),
+ G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
+ _("Invalid mount spec"));
+ return;
+ }
+
+ /* FIXME: check if this file is an archive */
+
filename = g_file_get_uri (archive->file);
DEBUG ("mounted %s\n", filename);
s = g_uri_escape_string (filename, NULL, FALSE);
Modified: trunk/po/POTFILES.in
==============================================================================
--- trunk/po/POTFILES.in (original)
+++ trunk/po/POTFILES.in Wed Mar 12 16:34:01 2008
@@ -11,6 +11,7 @@
common/gvfsdaemonprotocol.c
daemon/daemon-main.c
daemon/gvfsbackend.c
+daemon/gvfsbackendarchive.c
daemon/gvfsbackendburn.c
daemon/gvfsbackendcdda.c
daemon/gvfsbackendcomputer.c
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]