[gvfs] trash: Correctly determine fs type for paths with symlinks
- From: Ondrej Holy <oholy src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gvfs] trash: Correctly determine fs type for paths with symlinks
- Date: Fri, 14 Oct 2016 09:15:30 +0000 (UTC)
commit 6c0adcce5a3f5b784e198ce9cf2af6aaa540a264
Author: Ondrej Holy <oholy redhat com>
Date: Fri Sep 16 15:31:12 2016 +0200
trash: Correctly determine fs type for paths with symlinks
If, for example, "/home" is a symlink to "/mnt/home", and the users's $HOME
is "/home/user", then the code won't correctly recognize unix mount, because
it just walks up the path removing trailing components. Consequently, "/" is
used to determine filesystem type instead of "/mnt/home". It will cause
problems if "/mnt/home" is e.g. NFS, which is handled differently than local
filesystem.
It uses newly added g_unix_mount_for. Bump GLib dependency accordingly.
https://bugzilla.gnome.org/show_bug.cgi?id=771431
configure.ac | 2 +-
daemon/trashlib/trashwatcher.c | 17 +----------------
2 files changed, 2 insertions(+), 17 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 43b6087..8939be8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -61,7 +61,7 @@ GTK_DOC_CHECK
DISTCHECK_CONFIGURE_FLAGS="--enable-gtk-doc"
AC_SUBST(DISTCHECK_CONFIGURE_FLAGS)
-PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.49.4 gobject-2.0 gmodule-no-export-2.0 gio-unix-2.0 gio-2.0])
+PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.51.0 gobject-2.0 gmodule-no-export-2.0 gio-unix-2.0 gio-2.0])
PKG_CHECK_MODULES([DBUS], [dbus-1])
diff --git a/daemon/trashlib/trashwatcher.c b/daemon/trashlib/trashwatcher.c
index f1196a3..5520eb5 100644
--- a/daemon/trashlib/trashwatcher.c
+++ b/daemon/trashlib/trashwatcher.c
@@ -95,22 +95,7 @@ find_mount_entry_for_file (GFile *file)
char *pathname;
pathname = g_file_get_path (file);
- do
- {
- char *slash;
-
- slash = strrchr (pathname, '/');
-
- /* leave the leading '/' in place */
- if (slash == pathname)
- slash++;
-
- *slash = '\0';
-
- entry = g_unix_mount_at (pathname, NULL);
- }
- while (entry == NULL && pathname[1]);
-
+ entry = g_unix_mount_for (pathname, NULL);
g_free (pathname);
/* if the GUnixMount stuff is gummed up, this might fail. we can't
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]