[gvfs] afp: delete temporary file
- From: Christian Kellner <gicmo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gvfs] afp: delete temporary file
- Date: Thu, 25 Aug 2011 19:25:19 +0000 (UTC)
commit edfd66c80e7018d0a7093dc9798d62ce75265a32
Author: Carl-Anton Ingmarsson <ca ingmarsson gmail com>
Date: Mon Jul 11 21:52:02 2011 +0200
afp: delete temporary file
daemon/gvfsafpconnection.c | 13 ++++++++-----
daemon/gvfsbackendafp.c | 41 +++++++++++++++++++++++++++++++++++++----
2 files changed, 45 insertions(+), 9 deletions(-)
---
diff --git a/daemon/gvfsafpconnection.c b/daemon/gvfsafpconnection.c
index ec794ba..be9b56a 100644
--- a/daemon/gvfsafpconnection.c
+++ b/daemon/gvfsafpconnection.c
@@ -658,11 +658,14 @@ dispatch_reply (GVfsAfpConnection *afp_connection)
GUINT_TO_POINTER (priv->read_dsi_header.requestID));
if (req_data)
{
- GVfsAfpReply *reply;
-
- reply = g_vfs_afp_reply_new (priv->read_dsi_header.errorCode, priv->data,
- priv->read_dsi_header.totalDataLength);
- req_data->reply_cb (afp_connection, reply, NULL, req_data->user_data);
+ if (req_data->reply_cb)
+ {
+ GVfsAfpReply *reply;
+
+ reply = g_vfs_afp_reply_new (priv->read_dsi_header.errorCode, priv->data,
+ priv->read_dsi_header.totalDataLength);
+ req_data->reply_cb (afp_connection, reply, NULL, req_data->user_data);
+ }
g_hash_table_remove (priv->request_hash, GUINT_TO_POINTER (priv->read_dsi_header.requestID));
}
}
diff --git a/daemon/gvfsbackendafp.c b/daemon/gvfsbackendafp.c
index e0c74a9..be832ed 100644
--- a/daemon/gvfsbackendafp.c
+++ b/daemon/gvfsbackendafp.c
@@ -456,8 +456,6 @@ close_fork (GVfsBackendAfp *afp_backend,
close_fork_cb, G_VFS_JOB (job)->cancellable,
job);
g_object_unref (comm);
-
- afp_handle_free (afp_handle);
}
typedef void (*CreateFileCallback) (GVfsJob *job);
@@ -1095,6 +1093,36 @@ try_read (GVfsBackend *backend,
}
static void
+close_replace_close_fork_cb (GVfsJob *job)
+{
+ GVfsJobCloseWrite *cwjob = G_VFS_JOB_CLOSE_WRITE (job);
+ GVfsBackendAfp *afp_backend = G_VFS_BACKEND_AFP (cwjob->backend);
+ AfpHandle *afp_handle = (AfpHandle *)cwjob->handle;
+
+ GVfsAfpCommand *comm;
+
+ /* Delete temporary file */
+ comm = g_vfs_afp_command_new (AFP_COMMAND_DELETE);
+ /* pad byte */
+ g_vfs_afp_command_put_byte (comm, 0);
+ /* Volume ID */
+ g_vfs_afp_command_put_uint16 (comm, afp_backend->volume_id);
+ /* Directory ID 2 == / */
+ g_vfs_afp_command_put_uint32 (comm, 2);
+
+ /* Pathname */
+ put_pathname (comm, afp_handle->tmp_filename);
+
+ g_vfs_afp_connection_queue_command (afp_backend->server->conn, comm, NULL,
+ NULL, NULL);
+ g_object_unref (comm);
+
+
+ afp_handle_free (afp_handle);
+ g_vfs_job_succeeded (job);
+}
+
+static void
close_replace_exchange_files_cb (GVfsAfpConnection *afp_connection,
GVfsAfpReply *reply,
GError *error,
@@ -1126,11 +1154,13 @@ close_replace_exchange_files_cb (GVfsAfpConnection *afp_connection,
g_vfs_job_failed (G_VFS_JOB (job), G_IO_ERROR, G_IO_ERROR_FAILED,
_("Got error code: %d from server"), res_code);
break;
- }
+
+ }
return;
}
- close_fork (afp_backend, G_VFS_JOB (job), (AfpHandle *)job->handle, NULL);
+ close_fork (afp_backend, G_VFS_JOB (job), (AfpHandle *)job->handle,
+ close_replace_close_fork_cb);
}
static gboolean
@@ -1167,7 +1197,10 @@ try_close_write (GVfsBackend *backend,
g_object_unref (comm);
}
else
+ {
close_fork (afp_backend, G_VFS_JOB (job), afp_handle, NULL);
+ afp_handle_free (afp_handle);
+ }
return TRUE;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]