Return G_IO_ERROR_IS_DIRECTORY, not G_IO_ERROR_WOULD_MERGE when moving
authorAlexander Larsson <alexl@redhat.com>
Thu, 27 Mar 2008 20:13:00 +0000 (20:13 +0000)
committerAlexander Larsson <alexl@src.gnome.org>
Thu, 27 Mar 2008 20:13:00 +0000 (20:13 +0000)
2008-03-27  Alexander Larsson  <alexl@redhat.com>

* glocalfile.c (g_local_file_move):
Return G_IO_ERROR_IS_DIRECTORY, not G_IO_ERROR_WOULD_MERGE when moving
file over directory. This is according to the docs and what the move via
copy+remove fallback does.

svn path=/trunk/; revision=6758

gio/ChangeLog
gio/glocalfile.c

index 5672475..3365ced 100644 (file)
@@ -1,3 +1,10 @@
+2008-03-27  Alexander Larsson  <alexl@redhat.com>
+
+       * glocalfile.c (g_local_file_move):
+       Return G_IO_ERROR_IS_DIRECTORY, not G_IO_ERROR_WOULD_MERGE when moving
+       file over directory. This is according to the docs and what the move via
+       copy+remove fallback does.
+
 2008-03-27  Lin Ma  <Lin.Ma@Sun.COM>
 
        * fen/*.[hc]: Updated copyright.
index 03e8669..529d808 100644 (file)
@@ -2078,9 +2078,8 @@ g_local_file_move (GFile                  *source,
                   g_strerror (errsv));
       return FALSE;
     }
-  else
-    source_is_dir = S_ISDIR (statbuf.st_mode);
 
+  source_is_dir = S_ISDIR (statbuf.st_mode);
   source_size = statbuf.st_size;
   
   destination_exist = FALSE;
@@ -2094,10 +2093,16 @@ g_local_file_move (GFile                  *source,
          /* Always fail on dirs, even with overwrite */
          if (S_ISDIR (statbuf.st_mode))
            {
-             g_set_error (error,
-                          G_IO_ERROR,
-                          G_IO_ERROR_WOULD_MERGE,
-                          _("Can't move directory over directory"));
+             if (source_is_dir)
+               g_set_error (error,
+                            G_IO_ERROR,
+                            G_IO_ERROR_WOULD_MERGE,
+                            _("Can't move directory over directory"));
+              else
+               g_set_error (error,
+                            G_IO_ERROR,
+                            G_IO_ERROR_IS_DIRECTORY,
+                            _("File is directory"));
              return FALSE;
            }
        }