patches/gnome-vfs-08-trash-skip-copy.diff
author gheet
Thu, 14 Dec 2006 16:06:52 +0000
changeset 8809 a1af69090bc2
permissions -rw-r--r--
2006-12-14 Ghee Teo <[email protected]> * ORBit2.spec: added metainfo * gnome-vfs.spec: added metainfo * patches/gnome-vfs-03-g11n-i18n-ui.diff: removed upstream * patches/gnome-vfs-04-trash-only-home.diff: renamed * patches/gnome-vfs-05-mount-points-fix.diff: renamed * patches/gnome-vfs-06-trash-files-from-different-filesystem.diff: renamed * patches/gnome-vfs-07-socks-version.diff: renamed * patches/gnome-vfs-08-audio-cd-show-icon.diff: renamed * patches/gnome-vfs-09-trash-skip-copy.diff: renamed * patches/gnome-vfs-10-login_tty.diff: renamed * patches/gnome-vfs-11-krb5-config-no-gssapi.diff: renamed * patches/gnome-vfs-12-hidden.diff: renamed * patches/gnome-vfs-13-acl-permissions.diff: renamed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8809
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
     1
--- gnome-vfs-2.6.0/libgnomevfs/gnome-vfs-xfer.c	2005-04-13 09:09:29.000000000 +0530
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
     2
+++ archana-gnome-vfs-2.6.0/libgnomevfs/gnome-vfs-xfer.c	2005-04-13 10:41:54.819357496 +0530
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
     3
@@ -2115,9 +2115,36 @@ gnome_vfs_xfer_uri_internal (const GList
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
     4
 			source_uri != NULL;
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
     5
 			source_uri = source_uri->next, target_uri = target_uri->next) {
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
     6
 			gboolean same_fs;
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
     7
+			gboolean is_local;
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
     8
+			char *trash_dir;
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
     9
+			GnomeVFSURI *trash_uri;
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    10
+			GnomeVFSFileInfo *file_info;
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    11
 
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    12
 			g_assert (target_dir_uri != NULL);
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    13
 
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    14
+			/* For local uris, don't set the move option to copy/remove where remove
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    15
+			 * can't be done
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    16
+			 */
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    17
+			file_info = gnome_vfs_file_info_new ();
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    18
+
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    19
+			trash_dir = g_strconcat (g_get_home_dir (), "/.Trash", NULL);
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    20
+			trash_uri = gnome_vfs_uri_new (trash_dir);
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    21
+
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    22
+			result = gnome_vfs_get_file_info_uri ((GnomeVFSURI *)(source_uri->data),
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    23
+							      file_info,
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    24
+							      GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS);
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    25
+
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    26
+			is_local = gnome_vfs_uri_is_local ((GnomeVFSURI *)(source_uri->data));
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    27
+
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    28
+			if (result == GNOME_VFS_OK && ! strcmp (target_dir_uri->text, trash_uri->text)) {
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    29
+				if (is_local && (file_info->permissions & GNOME_VFS_PERM_ACCESS_WRITABLE) != 0) {
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    30
+					goto change_operation_move;
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    31
+				}
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    32
+				else {
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    33
+					goto dont_change_operation_move;
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    34
+				}
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    35
+			}
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    36
+change_operation_move:
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    37
 			result = gnome_vfs_check_same_fs_uris ((GnomeVFSURI *)source_uri->data, 
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    38
 				target_dir_uri, &same_fs);
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    39
 
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    40
@@ -2126,6 +2153,10 @@ gnome_vfs_xfer_uri_internal (const GList
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    41
 			}
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    42
 
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    43
 			move &= same_fs;
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    44
+dont_change_operation_move:
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    45
+			g_free (trash_dir);
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    46
+			gnome_vfs_uri_unref (trash_uri);
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    47
+			gnome_vfs_file_info_unref (file_info);
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    48
 		}
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    49
 	/*}*/
a1af69090bc2 2006-12-14 Ghee Teo <[email protected]>
gheet
parents:
diff changeset
    50