diff options
author | Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com> | 2011-08-15 00:39:40 +0200 |
---|---|---|
committer | Christian Kellner <gicmo@gnome.org> | 2011-08-25 21:19:56 +0200 |
commit | 0028fecf93021f0f736241db9c8764fa27d38b1b (patch) | |
tree | 741e60b8010d40d71f32d634b1695a6cb2154964 | |
parent | 5037b20bc4f6b051812a7576fbbe245421cf55a3 (diff) | |
download | gvfs-0028fecf93021f0f736241db9c8764fa27d38b1b.tar.gz |
afp: fail replace early if the given file is a directory
-rw-r--r-- | daemon/gvfsbackendafp.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/daemon/gvfsbackendafp.c b/daemon/gvfsbackendafp.c index fb112e94..71d2560c 100644 --- a/daemon/gvfsbackendafp.c +++ b/daemon/gvfsbackendafp.c @@ -2551,7 +2551,13 @@ replace_get_filedir_parms_cb (GObject *source_object, GAsyncResult *res, gpointe return; } - if (g_strcmp0 (g_file_info_get_etag (info), job->etag) != 0) + if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) + { + g_vfs_job_failed_literal (G_VFS_JOB (job), G_IO_ERROR, G_IO_ERROR_IS_DIRECTORY, + _("File is a directory")); + } + + else if (job->etag && g_strcmp0 (g_file_info_get_etag (info), job->etag) != 0) { g_vfs_job_failed_literal (G_VFS_JOB (job), G_IO_ERROR, G_IO_ERROR_WRONG_ETAG, @@ -2582,15 +2588,9 @@ try_replace (GVfsBackend *backend, return TRUE; } - if (etag) - { - get_filedir_parms (afp_backend, filename, AFP_FILE_BITMAP_MOD_DATE_BIT, 0, - G_VFS_JOB (job)->cancellable, replace_get_filedir_parms_cb, - job); - } - else - replace_cont (afp_backend, job); - + get_filedir_parms (afp_backend, filename, AFP_FILE_BITMAP_MOD_DATE_BIT, 0, + G_VFS_JOB (job)->cancellable, replace_get_filedir_parms_cb, + job); return TRUE; } |