summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/gdaemonfile.c8
-rw-r--r--daemon/gvfsbackenddav.c7
-rw-r--r--daemon/gvfsbackendftp.c9
-rw-r--r--daemon/gvfsbackendgoogle.c6
-rw-r--r--daemon/gvfsbackendgphoto2.c8
-rw-r--r--daemon/gvfsbackendmtp.c14
-rw-r--r--daemon/gvfsbackendsftp.c16
7 files changed, 60 insertions, 8 deletions
diff --git a/client/gdaemonfile.c b/client/gdaemonfile.c
index 2a8c1511..f11cf91c 100644
--- a/client/gdaemonfile.c
+++ b/client/gdaemonfile.c
@@ -2689,14 +2689,6 @@ file_transfer (GFile *source,
return FALSE;
}
- if (!native_transfer && remove_source &&
- (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE))
- {
- g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
- _("Operation not supported"));
- return FALSE;
- }
-
if (!native_transfer && local_path == NULL)
{
/* This will cause the fallback code to be involved */
diff --git a/daemon/gvfsbackenddav.c b/daemon/gvfsbackenddav.c
index 5929ab6a..d5c6516d 100644
--- a/daemon/gvfsbackenddav.c
+++ b/daemon/gvfsbackenddav.c
@@ -3477,6 +3477,13 @@ try_push (GVfsBackend *backend,
GFile *source;
PushHandle *handle;
+ if (remove_source && (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE))
+ {
+ g_vfs_job_failed (G_VFS_JOB (job), G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported"));
+ return TRUE;
+ }
+
handle = g_slice_new0 (PushHandle);
handle->backend = g_object_ref (backend);
handle->job = g_object_ref (G_VFS_JOB (job));
diff --git a/daemon/gvfsbackendftp.c b/daemon/gvfsbackendftp.c
index 1d9de93a..e86f5e91 100644
--- a/daemon/gvfsbackendftp.c
+++ b/daemon/gvfsbackendftp.c
@@ -1657,6 +1657,15 @@ do_pull (GVfsBackend * backend,
src = g_vfs_ftp_file_new_from_gvfs (ftp, source);
dest = g_file_new_for_path (local_path);
+ if (remove_source && (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE))
+ {
+ g_set_error_literal (&task.error,
+ G_IO_ERROR,
+ G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported"));
+ goto out;
+ }
+
/* If the source is a symlink, then it needs to be handled specially. */
if (flags & G_FILE_COPY_NOFOLLOW_SYMLINKS)
{
diff --git a/daemon/gvfsbackendgoogle.c b/daemon/gvfsbackendgoogle.c
index d4b074e2..27c9eba0 100644
--- a/daemon/gvfsbackendgoogle.c
+++ b/daemon/gvfsbackendgoogle.c
@@ -2777,6 +2777,12 @@ g_vfs_backend_google_push (GVfsBackend *_self,
g_rec_mutex_lock (&self->mutex);
g_debug ("+ push: %s -> %s, %d\n", local_path, destination, flags);
+ if (remove_source && (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE))
+ {
+ g_vfs_job_failed (G_VFS_JOB (job), G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, _("Operation not supported"));
+ goto out;
+ }
+
if (flags & G_FILE_COPY_BACKUP)
{
/* Return G_IO_ERROR_NOT_SUPPORTED instead of
diff --git a/daemon/gvfsbackendgphoto2.c b/daemon/gvfsbackendgphoto2.c
index 3120b389..71139b6c 100644
--- a/daemon/gvfsbackendgphoto2.c
+++ b/daemon/gvfsbackendgphoto2.c
@@ -3243,6 +3243,14 @@ do_pull (GVfsBackend *backend,
split_filename_with_ignore_prefix (gphoto2_backend, source, &dir, &name);
+ if (remove_source && (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE))
+ {
+ g_vfs_job_failed (G_VFS_JOB (job), G_IO_ERROR,
+ G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported"));
+ goto out;
+ }
+
if (remove_source && !gphoto2_backend->can_delete)
{
g_vfs_job_failed (G_VFS_JOB (job), G_IO_ERROR,
diff --git a/daemon/gvfsbackendmtp.c b/daemon/gvfsbackendmtp.c
index 7777c66b..42c2955e 100644
--- a/daemon/gvfsbackendmtp.c
+++ b/daemon/gvfsbackendmtp.c
@@ -1711,6 +1711,13 @@ do_pull (GVfsBackend *backend,
GFileInfo *info = NULL;
guint64 mtime;
+ if (remove_source && (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE)) {
+ g_vfs_job_failed (G_VFS_JOB (job),
+ G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported"));
+ goto exit;
+ }
+
CacheEntry *entry = get_cache_entry (G_VFS_BACKEND_MTP (backend), source);
if (entry == NULL) {
g_vfs_job_failed_literal (G_VFS_JOB (job),
@@ -2005,6 +2012,13 @@ do_push (GVfsBackend *backend,
gchar **elements = g_strsplit_set (destination, "/", -1);
unsigned int ne = g_strv_length (elements);
+ if (remove_source && (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE)) {
+ g_vfs_job_failed (G_VFS_JOB (job),
+ G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported"));
+ goto exit;
+ }
+
if (ne < 3) {
g_vfs_job_failed_literal (G_VFS_JOB (job),
G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED,
diff --git a/daemon/gvfsbackendsftp.c b/daemon/gvfsbackendsftp.c
index 1bb4a673..f843dec4 100644
--- a/daemon/gvfsbackendsftp.c
+++ b/daemon/gvfsbackendsftp.c
@@ -6216,6 +6216,14 @@ try_push (GVfsBackend *backend,
GFile *source;
SftpPushHandle *handle;
+ if (remove_source && (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE))
+ {
+ g_vfs_job_failed (G_VFS_JOB (op_job),
+ G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported"));
+ return TRUE;
+ }
+
if (!connection_is_usable (&op_backend->data_connection))
{
g_vfs_job_failed (G_VFS_JOB (op_job),
@@ -6765,6 +6773,14 @@ try_pull (GVfsBackend *backend,
SftpPullHandle *handle;
Command commands[2];
+ if (remove_source && (flags & G_FILE_COPY_NO_FALLBACK_FOR_MOVE))
+ {
+ g_vfs_job_failed (G_VFS_JOB (job),
+ G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ _("Operation not supported"));
+ return TRUE;
+ }
+
if (!connection_is_usable (&op_backend->data_connection))
{
g_vfs_job_failed (G_VFS_JOB (job),