summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2014-11-13 13:38:44 +0100
committerOndrej Holy <oholy@redhat.com>2014-11-19 08:54:41 +0100
commitd4aa8d9e48d08738e14d4855130a0dcad19bd2eb (patch)
tree4a03cb8ef034321fb5dd04d7730d05890d2e7b76
parent7c856adf3dc29a51bd07464c4b9a00252ad8bb69 (diff)
downloadgvfs-d4aa8d9e48d08738e14d4855130a0dcad19bd2eb.tar.gz
afc: try copy and delete fallback if backup couldn't be created
Move operation fails immediately with G_IO_ERROR_CANT_CREATE_BACKUP if G_FILE_COPY_BACKUP is specified. Consequently copy and delete fallback isn't executed. Return NOT_SUPPORTED instead of CANT_CREATE_BACKUP to proceed with the fallback if G_FILE_COPY_NO_FALLBACK_FOR_MOVE isn't specified. https://bugzilla.gnome.org/show_bug.cgi?id=740057
-rw-r--r--daemon/gvfsbackendafc.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/daemon/gvfsbackendafc.c b/daemon/gvfsbackendafc.c
index 3c0b7874..7fcb2b09 100644
--- a/daemon/gvfsbackendafc.c
+++ b/daemon/gvfsbackendafc.c
@@ -2572,10 +2572,24 @@ g_vfs_backend_afc_move (GVfsBackend *backend,
if (flags & G_FILE_COPY_BACKUP)
{
/* FIXME: implement! */
- g_vfs_job_failed (G_VFS_JOB (job),
- G_IO_ERROR,
- G_IO_ERROR_CANT_CREATE_BACKUP,
- _("Backups are not yet supported."));
+
+ if (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE)
+ {
+ g_vfs_job_failed_literal (G_VFS_JOB (job),
+ G_IO_ERROR,
+ G_IO_ERROR_CANT_CREATE_BACKUP,
+ _("Backups not supported"));
+ }
+ else
+ {
+ /* Return G_IO_ERROR_NOT_SUPPORTED instead of G_IO_ERROR_CANT_CREATE_BACKUP
+ * to be proceeded with copy and delete fallback (see g_file_move). */
+ g_vfs_job_failed_literal (G_VFS_JOB (job),
+ G_IO_ERROR,
+ G_IO_ERROR_NOT_SUPPORTED,
+ "Operation not supported");
+ }
+
return;
}