[gvfs] afp: move map_id function to GVfsAfpServer
- From: Carl-Anton Ingmarsson <carlantoni src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gvfs] afp: move map_id function to GVfsAfpServer
- Date: Thu, 9 Aug 2012 20:16:39 +0000 (UTC)
commit 319c19830c49f8b4c10f40f763db95fe402e38cb
Author: Carl-Anton Ingmarsson <ca ingmarsson gmail com>
Date: Sun Apr 22 22:12:19 2012 +0200
afp: move map_id function to GVfsAfpServer
also rename the AfpMapIDFunction enum to GVfsAfpMapIDFunction and move it into
gvfsafpserver.h.
daemon/gvfsafpconnection.h | 10 ---
daemon/gvfsafpserver.c | 175 ++++++++++++++++++++++++++++++++++++++++++++
daemon/gvfsafpserver.h | 23 ++++++
daemon/gvfsafpvolume.c | 175 --------------------------------------------
daemon/gvfsafpvolume.h | 12 ---
daemon/gvfsbackendafp.c | 24 +++---
6 files changed, 210 insertions(+), 209 deletions(-)
---
diff --git a/daemon/gvfsafpconnection.h b/daemon/gvfsafpconnection.h
index 5637ed9..a524447 100644
--- a/daemon/gvfsafpconnection.h
+++ b/daemon/gvfsafpconnection.h
@@ -36,16 +36,6 @@ enum
AFP_GET_USER_INFO_BITMAP_GET_UUID_BIT = 0x4
};
-typedef enum
-{
- AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME = 1,
- AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME = 2,
- AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME = 3,
- AFP_MAP_ID_FUNCTION_GROUP_ID_TO_UTF8_NAME = 4,
- AFP_MAP_ID_FUNCTION_USER_UUID_TO_UTF8_NAME = 5,
- AFP_MAP_ID_FUNCTION_GROUP_UUID_TO_UTF8_NAME = 6
-} AfpMapIDFunction;
-
enum
{
AFP_MAP_NAME_FUNCTION_NAME_TO_USER_ID = 1,
diff --git a/daemon/gvfsafpserver.c b/daemon/gvfsafpserver.c
index 7431040..5b0e248 100644
--- a/daemon/gvfsafpserver.c
+++ b/daemon/gvfsafpserver.c
@@ -1559,4 +1559,179 @@ g_vfs_afp_server_fill_info (GVfsAfpServer *server,
else
set_access_attributes (info, (permissions >> 0) & 0x7);
}
+}
+
+typedef struct
+{
+ GVfsAfpMapIDFunction function;
+ char *name;
+} MapIDData;
+
+static void
+map_id_data_free (MapIDData *mid)
+{
+ g_free (mid->name);
+
+ g_slice_free (MapIDData, mid);
+}
+
+static void
+map_id_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
+{
+ GVfsAfpConnection *conn = G_VFS_AFP_CONNECTION (source_object);
+ GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (user_data);
+
+ GVfsAfpReply *reply;
+ GError *err = NULL;
+
+ AfpResultCode res_code;
+ MapIDData *map_data;
+
+ reply = g_vfs_afp_connection_send_command_finish (conn, res, &err);
+ if (!reply)
+ {
+ g_simple_async_result_take_error (simple, err);
+ g_simple_async_result_complete (simple);
+ return;
+ }
+
+ res_code = g_vfs_afp_reply_get_result_code (reply);
+ if (res_code != AFP_RESULT_NO_ERROR)
+ {
+ switch (res_code)
+ {
+ case AFP_RESULT_ITEM_NOT_FOUND:
+ g_simple_async_result_set_error (simple, G_IO_ERROR, G_IO_ERROR_FAILED,
+ _("ID not found"));
+ break;
+ default:
+ g_simple_async_result_take_error (simple, afp_result_code_to_gerror (res_code));
+ break;
+ }
+
+ g_simple_async_result_complete (simple);
+ return;
+ }
+
+ map_data = g_simple_async_result_get_op_res_gpointer (simple);
+
+ if (map_data->function == GVFS_AFP_MAP_ID_FUNCTION_USER_UUID_TO_UTF8_NAME ||
+ map_data->function == GVFS_AFP_MAP_ID_FUNCTION_GROUP_UUID_TO_UTF8_NAME)
+ {
+ /* objType */
+ g_vfs_afp_reply_read_uint32 (reply, NULL);
+ /* id */
+ g_vfs_afp_reply_read_uint32 (reply, NULL);
+ }
+
+ if (map_data->function == GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME ||
+ map_data->function == GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME)
+ {
+ g_vfs_afp_reply_read_pascal (reply, &map_data->name);
+ }
+ else
+ {
+ GVfsAfpName *afp_name;
+
+ g_vfs_afp_reply_read_afp_name (reply, FALSE, &afp_name);
+ map_data->name = g_vfs_afp_name_get_string (afp_name);
+ g_vfs_afp_name_unref (afp_name);
+ }
+
+ g_simple_async_result_complete (simple);
+}
+
+/*
+ * g_vfs_afp_server_map_id:
+ *
+ * @server: a #GVfsAfpServer.
+ * @map_function: a #GVfsAfpMapIDFunction.
+ * @id: the id to be mapped to a name.
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @callback: callback to call when the request is satisfied.
+ * @user_data: the data to pass to callback function.
+ *
+ * Asynchronously maps a user id, group id or uuid to a name.
+ */
+void
+g_vfs_afp_server_map_id (GVfsAfpServer *server,
+ GVfsAfpMapIDFunction map_function,
+ gint64 id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ GVfsAfpServerPrivate *priv;
+ GVfsAfpCommand *comm;
+ GSimpleAsyncResult *simple;
+ MapIDData *map_data;
+
+ g_return_if_fail (G_VFS_IS_AFP_SERVER (server));
+
+ priv = server->priv;
+
+ comm = g_vfs_afp_command_new (AFP_COMMAND_MAP_ID);
+
+ /* SubFunction*/
+ g_vfs_afp_command_put_byte (comm, map_function);
+
+ /* ID */
+ if (map_function == GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME ||
+ map_function == GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME)
+ g_vfs_afp_command_put_int32 (comm, id);
+ else
+ g_vfs_afp_command_put_int64 (comm, id);
+
+ simple = g_simple_async_result_new (G_OBJECT (server), callback,
+ user_data, g_vfs_afp_server_map_id);
+
+ map_data = g_slice_new0 (MapIDData);
+ map_data->function = map_function;
+ g_simple_async_result_set_op_res_gpointer (simple, map_data,
+ (GDestroyNotify)map_id_data_free);
+
+ g_vfs_afp_connection_send_command (priv->conn, comm, NULL,
+ map_id_cb, cancellable, simple);
+ g_object_unref (comm);
+}
+
+/*
+ * g_vfs_afp_server_map_id_finish:
+ *
+ * @server: a #GVfsAfpServer.
+ * @result: a #GAsyncResult.
+ * @map_function: (out) optional out parameter to get the #GVfsAfpMapIDFunction
+ * which was used, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
+ *
+ * Finalizes the asynchronous operation started by
+ * g_vfs_afp_server_map_id.
+ *
+ * Returns: (transfer full): A string with the name of the id or %NULL
+ * on error.
+ */
+char *
+g_vfs_afp_server_map_id_finish (GVfsAfpServer *server,
+ GAsyncResult *res,
+ GVfsAfpMapIDFunction *map_function,
+ GError **error)
+{
+ GSimpleAsyncResult *simple;
+ MapIDData *map_data;
+
+ g_return_val_if_fail (g_simple_async_result_is_valid (res, G_OBJECT (server),
+ g_vfs_afp_server_map_id),
+ NULL);
+
+ simple = (GSimpleAsyncResult *)res;
+
+ if (g_simple_async_result_propagate_error (simple, error))
+ return NULL;
+
+ map_data = g_simple_async_result_get_op_res_gpointer (simple);
+
+ if (map_function)
+ *map_function = map_data->function;
+
+ return g_strdup (map_data->name);
}
\ No newline at end of file
diff --git a/daemon/gvfsafpserver.h b/daemon/gvfsafpserver.h
index 46e7368..84272db 100644
--- a/daemon/gvfsafpserver.h
+++ b/daemon/gvfsafpserver.h
@@ -120,6 +120,29 @@ void g_vfs_afp_server_fill_info (GVfsAfpServer *server,
gboolean directory,
guint16 bitmap);
+
+typedef enum
+{
+ GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME = 1,
+ GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME = 2,
+ GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME = 3,
+ GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_UTF8_NAME = 4,
+ GVFS_AFP_MAP_ID_FUNCTION_USER_UUID_TO_UTF8_NAME = 5,
+ GVFS_AFP_MAP_ID_FUNCTION_GROUP_UUID_TO_UTF8_NAME = 6
+} GVfsAfpMapIDFunction;
+
+void g_vfs_afp_server_map_id (GVfsAfpServer *server,
+ GVfsAfpMapIDFunction map_function,
+ gint64 id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+char * g_vfs_afp_server_map_id_finish (GVfsAfpServer *server,
+ GAsyncResult *res,
+ GVfsAfpMapIDFunction *map_function,
+ GError **error);
+
G_END_DECLS
#endif /* _GVFSAFPSERVER_H_ */
diff --git a/daemon/gvfsafpvolume.c b/daemon/gvfsafpvolume.c
index 2e5e7c1..2ec48dc 100644
--- a/daemon/gvfsafpvolume.c
+++ b/daemon/gvfsafpvolume.c
@@ -1679,181 +1679,6 @@ g_vfs_afp_volume_copy_file_finish (GVfsAfpVolume *volume,
return TRUE;
}
-typedef struct
-{
- AfpMapIDFunction function;
- char *name;
-} MapIDData;
-
-static void
-map_id_data_free (MapIDData *mid)
-{
- g_free (mid->name);
-
- g_slice_free (MapIDData, mid);
-}
-
-static void
-map_id_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
-{
- GVfsAfpConnection *conn = G_VFS_AFP_CONNECTION (source_object);
- GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (user_data);
-
- GVfsAfpReply *reply;
- GError *err = NULL;
-
- AfpResultCode res_code;
- MapIDData *map_data;
-
- reply = g_vfs_afp_connection_send_command_finish (conn, res, &err);
- if (!reply)
- {
- g_simple_async_result_take_error (simple, err);
- g_simple_async_result_complete (simple);
- return;
- }
-
- res_code = g_vfs_afp_reply_get_result_code (reply);
- if (res_code != AFP_RESULT_NO_ERROR)
- {
- switch (res_code)
- {
- case AFP_RESULT_ITEM_NOT_FOUND:
- g_simple_async_result_set_error (simple, G_IO_ERROR, G_IO_ERROR_FAILED,
- _("ID not found"));
- break;
- default:
- g_simple_async_result_take_error (simple, afp_result_code_to_gerror (res_code));
- break;
- }
-
- g_simple_async_result_complete (simple);
- return;
- }
-
- map_data = g_simple_async_result_get_op_res_gpointer (simple);
-
- if (map_data->function == AFP_MAP_ID_FUNCTION_USER_UUID_TO_UTF8_NAME ||
- map_data->function == AFP_MAP_ID_FUNCTION_GROUP_UUID_TO_UTF8_NAME)
- {
- /* objType */
- g_vfs_afp_reply_read_uint32 (reply, NULL);
- /* id */
- g_vfs_afp_reply_read_uint32 (reply, NULL);
- }
-
- if (map_data->function == AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME ||
- map_data->function == AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME)
- {
- g_vfs_afp_reply_read_pascal (reply, &map_data->name);
- }
- else
- {
- GVfsAfpName *afp_name;
-
- g_vfs_afp_reply_read_afp_name (reply, FALSE, &afp_name);
- map_data->name = g_vfs_afp_name_get_string (afp_name);
- g_vfs_afp_name_unref (afp_name);
- }
-
- g_simple_async_result_complete (simple);
-}
-
-/*
- * g_vfs_afp_volume_map_id:
- *
- * @volume: a #GVfsAfpVolume.
- * @map_function: a #AfpMapIDFunction.
- * @id: the id to be mapped to a name.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: callback to call when the request is satisfied.
- * @user_data: the data to pass to callback function.
- *
- * Asynchronously maps a user id, group id or uuid to a name.
- */
-void
-g_vfs_afp_volume_map_id (GVfsAfpVolume *volume,
- AfpMapIDFunction map_function,
- gint64 id,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
-{
- GVfsAfpVolumePrivate *priv;
- GVfsAfpCommand *comm;
- GSimpleAsyncResult *simple;
- MapIDData *map_data;
-
- g_return_if_fail (G_VFS_IS_AFP_VOLUME (volume));
-
- priv = volume->priv;
-
- comm = g_vfs_afp_command_new (AFP_COMMAND_MAP_ID);
-
- /* SubFunction*/
- g_vfs_afp_command_put_byte (comm, map_function);
-
- /* ID */
- if (map_function == AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME ||
- map_function == AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME)
- g_vfs_afp_command_put_int32 (comm, id);
- else
- g_vfs_afp_command_put_int64 (comm, id);
-
- simple = g_simple_async_result_new (G_OBJECT (volume), callback,
- user_data, g_vfs_afp_volume_map_id);
-
- map_data = g_slice_new0 (MapIDData);
- map_data->function = map_function;
- g_simple_async_result_set_op_res_gpointer (simple, map_data,
- (GDestroyNotify)map_id_data_free);
-
- g_vfs_afp_connection_send_command (priv->conn, comm, NULL,
- map_id_cb, cancellable, simple);
- g_object_unref (comm);
-}
-
-/*
- * g_vfs_afp_volume_map_id_finish:
- *
- * @volume: a #GVfsAfpVolume.
- * @result: a #GAsyncResult.
- * @map_function: (out) optional out parameter to get the #AfpMapIDFunction
- * which was used, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
- *
- * Finalizes the asynchronous operation started by
- * g_vfs_afp_volume_map_id.
- *
- * Returns: (transfer full): A string with the name of the id or %NULL
- * on error.
- */
-char *
-g_vfs_afp_volume_map_id_finish (GVfsAfpVolume *volume,
- GAsyncResult *res,
- AfpMapIDFunction *map_function,
- GError **error)
-{
- GSimpleAsyncResult *simple;
- MapIDData *map_data;
-
- g_return_val_if_fail (g_simple_async_result_is_valid (res, G_OBJECT (volume),
- g_vfs_afp_volume_map_id),
- NULL);
-
- simple = (GSimpleAsyncResult *)res;
-
- if (g_simple_async_result_propagate_error (simple, error))
- return NULL;
-
- map_data = g_simple_async_result_get_op_res_gpointer (simple);
-
- if (map_function)
- *map_function = map_data->function;
-
- return g_strdup (map_data->name);
-}
-
static void
get_filedir_parms_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
diff --git a/daemon/gvfsafpvolume.h b/daemon/gvfsafpvolume.h
index 6325e96..bca354a 100644
--- a/daemon/gvfsafpvolume.h
+++ b/daemon/gvfsafpvolume.h
@@ -160,18 +160,6 @@ gboolean g_vfs_afp_volume_move_and_rename_finish (GVfsAfpVolume *volume,
GAsyncResult *res,
GError **error);
-void g_vfs_afp_volume_map_id (GVfsAfpVolume *volume,
- AfpMapIDFunction map_function,
- gint64 id,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-
-char * g_vfs_afp_volume_map_id_finish (GVfsAfpVolume *volume,
- GAsyncResult *res,
- AfpMapIDFunction *map_function,
- GError **error);
-
void g_vfs_afp_volume_get_filedir_parms (GVfsAfpVolume *volume,
const char *filename,
guint16 file_bitmap,
diff --git a/daemon/gvfsbackendafp.c b/daemon/gvfsbackendafp.c
index 0727486..4fc5628 100644
--- a/daemon/gvfsbackendafp.c
+++ b/daemon/gvfsbackendafp.c
@@ -1822,27 +1822,27 @@ try_query_fs_info (GVfsBackend *backend,
static void
get_name_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
- GVfsAfpVolume *volume = G_VFS_AFP_VOLUME (source_object);
+ GVfsAfpServer *server = G_VFS_AFP_SERVER (source_object);
GVfsJobQueryInfo *job = G_VFS_JOB_QUERY_INFO (user_data);
char *name;
- AfpMapIDFunction map_function;
+ GVfsAfpMapIDFunction map_function;
guint outstanding_requests;
- name = g_vfs_afp_volume_map_id_finish (volume, res, &map_function, NULL);
+ name = g_vfs_afp_server_map_id_finish (server, res, &map_function, NULL);
if (name)
{
switch (map_function)
{
- case AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME:
+ case GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME:
g_file_info_set_attribute_string (job->file_info, G_FILE_ATTRIBUTE_OWNER_USER,
name);
break;
- case AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME:
+ case GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME:
g_file_info_set_attribute_string (job->file_info, G_FILE_ATTRIBUTE_OWNER_USER_REAL,
name);
break;
- case AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME:
+ case GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME:
g_file_info_set_attribute_string (job->file_info, G_FILE_ATTRIBUTE_OWNER_GROUP,
name);
break;
@@ -1908,16 +1908,16 @@ query_info_get_filedir_parms_cb (GObject *source_object, GAsyncResult *res, gpoi
if (g_file_attribute_matcher_matches (matcher, G_FILE_ATTRIBUTE_OWNER_USER))
{
- g_vfs_afp_volume_map_id (volume,
- AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME, uid,
+ g_vfs_afp_server_map_id (afp_backend->server,
+ GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_NAME, uid,
G_VFS_JOB (job)->cancellable, get_name_cb, job);
outstanding_requests++;
}
if (g_file_attribute_matcher_matches (matcher, G_FILE_ATTRIBUTE_OWNER_USER_REAL))
{
- g_vfs_afp_volume_map_id (volume,
- AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME, uid,
+ g_vfs_afp_server_map_id (afp_backend->server,
+ GVFS_AFP_MAP_ID_FUNCTION_USER_ID_TO_UTF8_NAME, uid,
G_VFS_JOB (job)->cancellable, get_name_cb, job);
outstanding_requests++;
}
@@ -1930,8 +1930,8 @@ query_info_get_filedir_parms_cb (GObject *source_object, GAsyncResult *res, gpoi
gid = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_UNIX_GID);
- g_vfs_afp_volume_map_id (volume,
- AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME, gid,
+ g_vfs_afp_server_map_id (afp_backend->server,
+ GVFS_AFP_MAP_ID_FUNCTION_GROUP_ID_TO_NAME, gid,
G_VFS_JOB (job)->cancellable, get_name_cb, job);
outstanding_requests++;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]