summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl-Anton Ingmarsson <ca.ingmarsson@gmail.com>2011-08-15 00:39:40 +0200
committerChristian Kellner <gicmo@gnome.org>2011-08-25 21:19:56 +0200
commit0028fecf93021f0f736241db9c8764fa27d38b1b (patch)
tree741e60b8010d40d71f32d634b1695a6cb2154964
parent5037b20bc4f6b051812a7576fbbe245421cf55a3 (diff)
downloadgvfs-0028fecf93021f0f736241db9c8764fa27d38b1b.tar.gz
afp: fail replace early if the given file is a directory
-rw-r--r--daemon/gvfsbackendafp.c20
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;
}