diff options
-rw-r--r-- | client/gdaemonfile.c | 8 | ||||
-rw-r--r-- | daemon/gvfsbackenddav.c | 7 | ||||
-rw-r--r-- | daemon/gvfsbackendftp.c | 9 | ||||
-rw-r--r-- | daemon/gvfsbackendgoogle.c | 6 | ||||
-rw-r--r-- | daemon/gvfsbackendgphoto2.c | 8 | ||||
-rw-r--r-- | daemon/gvfsbackendmtp.c | 14 | ||||
-rw-r--r-- | daemon/gvfsbackendsftp.c | 16 |
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), |