patches/glib-04-gio-trash-only-home.diff
author davelam
Wed, 15 Apr 2009 03:54:08 +0000
changeset 15616 6ba9f6e77e09
parent 12755 378c127fb033
child 17560 cbb9aa09c34f
permissions -rw-r--r--
2009-04-15 Dave Lin <[email protected]> * base-specs/gnome-devel-docs.spec: Bump to 2.26.1. * base-specs/gnome-doc-utils.spec: Bump to 0.16.1. * base-specs/pango.spec: Bump to 1.24.1. * base-specs/gtk2.spec: Bump to 2.16.1. * base-specs/glib2.spec: Bump to 2.20.1. * patches/glib-04-gio-trash-only-home.diff: Reworked.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15616
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
     1
--- glib-2.20.1/gio/glocalfile.c.ori	2009-04-15 03:46:56.161574399 +0100
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
     2
+++ glib-2.20.1/gio/glocalfile.c	2009-04-15 03:48:57.698109713 +0100
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
     3
@@ -1715,6 +1715,7 @@
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
     4
   int fd;
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
     5
   struct stat trash_stat, global_stat;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
     6
   char *dirname, *globaldir;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
     7
+  GFile *trash;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
     8
   
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
     9
   if (g_lstat (local->filename, &file_stat) != 0)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    10
     {
15616
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
    11
@@ -1732,123 +1733,26 @@
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    12
 
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    13
   is_homedir_trash = FALSE;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    14
   trashdir = NULL;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    15
-  if (file_stat.st_dev == home_stat.st_dev)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    16
+  /* Always move to .Trash in the user's home directory
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    17
+  */
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    18
+  is_homedir_trash = TRUE;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    19
+  errno = 0;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    20
+  trashdir = g_build_filename (g_get_user_data_dir (), "Trash", NULL);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    21
+  if (g_mkdir_with_parents (trashdir, 0700) < 0)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    22
     {
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    23
-      is_homedir_trash = TRUE;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    24
-      errno = 0;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    25
-      trashdir = g_build_filename (g_get_user_data_dir (), "Trash", NULL);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    26
-      if (g_mkdir_with_parents (trashdir, 0700) < 0)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    27
-	{
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    28
-          char *display_name;
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
    29
-          int errsv = errno;
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    30
-
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    31
-          display_name = g_filename_display_name (trashdir);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    32
-          g_set_error (error, G_IO_ERROR,
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
    33
-                       g_io_error_from_errno (errsv),
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    34
-                       _("Unable to create trash dir %s: %s"),
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
    35
-                       display_name, g_strerror (errsv));
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    36
-          g_free (display_name);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    37
-          g_free (trashdir);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    38
-          return FALSE;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    39
-	}
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    40
-      topdir = g_strdup (g_get_user_data_dir ());
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    41
-    }
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    42
-  else
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    43
-    {
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    44
-      uid_t uid;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    45
-      char uid_str[32];
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    46
-
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    47
-      uid = geteuid ();
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    48
-      g_snprintf (uid_str, sizeof (uid_str), "%lu", (unsigned long)uid);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    49
-      
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    50
-      topdir = find_topdir_for (local->filename);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    51
-      if (topdir == NULL)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    52
-	{
12755
378c127fb033 2008-07-03 Damien Carbery <[email protected]>
dcarbery
parents: 12077
diff changeset
    53
-	  g_set_error_literal (error, G_IO_ERROR,
378c127fb033 2008-07-03 Damien Carbery <[email protected]>
dcarbery
parents: 12077
diff changeset
    54
-                               G_IO_ERROR_NOT_SUPPORTED,
378c127fb033 2008-07-03 Damien Carbery <[email protected]>
dcarbery
parents: 12077
diff changeset
    55
-                               _("Unable to find toplevel directory for trash"));
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    56
-	  return FALSE;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    57
-	}
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    58
-      
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    59
-      /* Try looking for global trash dir $topdir/.Trash/$uid */
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    60
-      globaldir = g_build_filename (topdir, ".Trash", NULL);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    61
-      if (g_lstat (globaldir, &global_stat) == 0 &&
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    62
-	  S_ISDIR (global_stat.st_mode) &&
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    63
-	  (global_stat.st_mode & S_ISVTX) != 0)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    64
-	{
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    65
-	  trashdir = g_build_filename (globaldir, uid_str, NULL);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    66
-
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    67
-	  if (g_lstat (trashdir, &trash_stat) == 0)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    68
-	    {
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    69
-	      if (!S_ISDIR (trash_stat.st_mode) ||
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    70
-		  trash_stat.st_uid != uid)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    71
-		{
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    72
-		  /* Not a directory or not owned by user, ignore */
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    73
-		  g_free (trashdir);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    74
-		  trashdir = NULL;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    75
-		}
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    76
-	    }
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    77
-	  else if (g_mkdir (trashdir, 0700) == -1)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    78
-	    {
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    79
-	      g_free (trashdir);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    80
-	      trashdir = NULL;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    81
-	    }
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    82
-	}
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    83
-      g_free (globaldir);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    84
-
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    85
-      if (trashdir == NULL)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    86
-	{
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
    87
-	  gboolean tried_create;
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
    88
-	  
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    89
-	  /* No global trash dir, or it failed the tests, fall back to $topdir/.Trash-$uid */
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    90
-	  dirname = g_strdup_printf (".Trash-%s", uid_str);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    91
-	  trashdir = g_build_filename (topdir, dirname, NULL);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    92
-	  g_free (dirname);
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
    93
-
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
    94
-	  tried_create = FALSE;
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
    95
-
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
    96
-	retry:
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    97
-	  if (g_lstat (trashdir, &trash_stat) == 0)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    98
-	    {
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
    99
-	      if (!S_ISDIR (trash_stat.st_mode) ||
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   100
-		  trash_stat.st_uid != uid)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   101
-		{
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   102
-		  /* Remove the failed directory */
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   103
-		  if (tried_create)
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   104
-		    g_remove (trashdir);
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   105
-		  
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   106
-		  /* Not a directory or not owned by user, ignore */
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   107
-		  g_free (trashdir);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   108
-		  trashdir = NULL;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   109
-		}
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   110
-	    }
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   111
-	  else
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   112
-	    {
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   113
-	      if (!tried_create &&
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   114
-		  g_mkdir (trashdir, 0700) != -1)
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   115
-		{
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   116
-		  /* Ensure that the created dir has the right uid etc.
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   117
-		     This might fail on e.g. a FAT dir */
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   118
-		  tried_create = TRUE;
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   119
-		  goto retry;
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   120
-		}
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   121
-	      else
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   122
-		{
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   123
-		  g_free (trashdir);
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   124
-		  trashdir = NULL;
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   125
-		}
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   126
-	    }
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   127
-	}
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   128
+      char *display_name;
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   129
+      int errsv = errno;
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   130
 
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   131
-      if (trashdir == NULL)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   132
-	{
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   133
-	  g_free (topdir);
12755
378c127fb033 2008-07-03 Damien Carbery <[email protected]>
dcarbery
parents: 12077
diff changeset
   134
-	  g_set_error_literal (error, G_IO_ERROR,
378c127fb033 2008-07-03 Damien Carbery <[email protected]>
dcarbery
parents: 12077
diff changeset
   135
-                               G_IO_ERROR_NOT_SUPPORTED,
378c127fb033 2008-07-03 Damien Carbery <[email protected]>
dcarbery
parents: 12077
diff changeset
   136
-                               _("Unable to find or create trash directory"));
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   137
-	  return FALSE;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   138
-	}
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   139
+      display_name = g_filename_display_name (trashdir);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   140
+      g_set_error (error, G_IO_ERROR,
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   141
+                   g_io_error_from_errno (errsv),
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   142
+                   _("Unable to create trash dir %s: %s"),
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   143
+                   display_name, g_strerror (errsv));
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   144
+      g_free (display_name);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   145
+      g_free (trashdir);
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   146
+      return FALSE;
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   147
     }
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   148
+  topdir = g_strdup (g_get_user_data_dir ());
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   149
 
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   150
   /* Trashdir points to the trash dir with the "info" and "files" subdirectories */
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   151
 
15616
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
   152
@@ -1912,8 +1816,8 @@
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   153
   trashfile = g_build_filename (filesdir, trashname, NULL);
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   154
 
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   155
   g_free (filesdir);
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   156
-
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   157
-  if (g_rename (local->filename, trashfile) == -1)
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   158
+  trash = g_file_new_for_path(trashfile);
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   159
+  if (!g_file_move (file, trash, 0, cancellable, NULL, NULL, NULL))
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   160
     {
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   161
       int errsv = errno;
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   162
 
15616
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
   163
@@ -1921,6 +1825,7 @@
11453
5bbd46514725 2008-01-15 Damien Carbery <[email protected]>
dcarbery
parents:
diff changeset
   164
       g_free (trashname);
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   165
       g_free (infofile);
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   166
       g_free (trashfile);
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   167
+      g_object_unref(trash);
15616
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
   168
 
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
   169
       if (errsv == EXDEV)
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
   170
 	/* The trash dir was actually on another fs anyway!?
6ba9f6e77e09 2009-04-15 Dave Lin <[email protected]>
davelam
parents: 12755
diff changeset
   171
@@ -1939,6 +1844,7 @@
12077
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   172
     }
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   173
 
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   174
   g_free (trashfile);
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   175
+  g_object_unref(trash);
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   176
 
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   177
   /* TODO: Do we need to update mtime/atime here after the move? */
57a76f58c89c 2008-04-10 Padraig O'Briain <[email protected]>
padraig
parents: 11453
diff changeset
   178