The attached patch changes the gnome_vfs_find_directory_cancellable function so 
the parent_uri is used to find the special directory instead of the given uri.
It is needed to properly find the trash for a symlink whose target is on 
another filesystem.

Otherwise, as the uri is resolved, the trash for the filesystem of the symlink 
target is returned instead of the trash for the filesystem of the symlink 
itself.

This patch solves the bugzilla issue: 
http://bugzilla.gnome.org/show_bug.cgi?id=312506
and tries to follow Alexander Larsson advice: 
http://mail.gnome.org/archives/nautilus-list/2005-October/msg00159.html


Yann


diff -Nur gnome-vfs2-2.20.0/libgnomevfs/gnome-vfs-cancellable-ops.c gnome-vfs2-2.20.0.new/libgnomevfs/gnome-vfs-cancellable-ops.c
--- gnome-vfs2-2.20.0/libgnomevfs/gnome-vfs-cancellable-ops.c	2007-09-17 19:00:46.000000000 +0200
+++ gnome-vfs2-2.20.0.new/libgnomevfs/gnome-vfs-cancellable-ops.c	2007-10-21 20:50:23.000000000 +0200
@@ -285,7 +285,7 @@
 				      GnomeVFSContext *context)
 {
 	GnomeVFSResult result;
-	GnomeVFSURI *resolved_uri;
+	GnomeVFSURI *resolved_uri, *parent_uri;
 
 	g_return_val_if_fail (result_uri != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS);
 
@@ -323,7 +323,13 @@
 	 * we want to look at the device the symlink points to, not the one the
 	 * symlink is stored on
 	 */
+	parent_uri = gnome_vfs_uri_get_parent (near_uri);
+	if (parent_uri) {
+		gnome_vfs_uri_unref (near_uri);
+		near_uri = parent_uri;
+	}
 	result = _gnome_vfs_uri_resolve_all_symlinks_uri (near_uri, &resolved_uri);
+
 	if (result == GNOME_VFS_OK) {
 		gnome_vfs_uri_unref (near_uri);
 		near_uri = resolved_uri;
_______________________________________________
gnome-vfs-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-vfs-list

Reply via email to