diff options
author | Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com> | 2011-06-20 00:18:29 +0200 |
---|---|---|
committer | Christian Kellner <gicmo@gnome.org> | 2011-08-25 21:18:39 +0200 |
commit | 4b505fd08dd144dc3393833ff83bcd2207568ff9 (patch) | |
tree | 979a4b868f66994a119a4ba3abaa8ad914fc4973 /daemon/gvfsafpserver.c | |
parent | 81fa29b69230fc40aeadbb415a2ccf6eaa7621a4 (diff) | |
download | gvfs-4b505fd08dd144dc3393833ff83bcd2207568ff9.tar.gz |
afp: read UTF-8 Server Name from server info
Diffstat (limited to 'daemon/gvfsafpserver.c')
-rw-r--r-- | daemon/gvfsafpserver.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/daemon/gvfsafpserver.c b/daemon/gvfsafpserver.c index 0bcd8974..504e25c6 100644 --- a/daemon/gvfsafpserver.c +++ b/daemon/gvfsafpserver.c @@ -673,6 +673,7 @@ get_server_info (GVfsAfpServer *afp_serv, GVfsAfpReply *reply; guint16 MachineType_offset, AFPVersionCount_offset, UAMCount_offset; + guint8 count; guint i; @@ -690,7 +691,19 @@ get_server_info (GVfsAfpServer *afp_serv, g_vfs_afp_reply_read_uint16 (reply, &afp_serv->flags); g_vfs_afp_reply_read_pascal (reply, &afp_serv->server_name); - + + /* Parse UTF-8 ServerName */ + if (afp_serv->flags & (0x1 << 8)) { + guint16 UTF8ServerName_offset; + + g_vfs_afp_reply_skip_to_even (reply); + g_vfs_afp_reply_seek (reply, 6, G_SEEK_CUR); + g_vfs_afp_reply_read_uint16 (reply, &UTF8ServerName_offset); + + g_vfs_afp_reply_seek (reply, UTF8ServerName_offset, G_SEEK_SET); + g_vfs_afp_reply_read_afp_name (reply, FALSE, &afp_serv->utf8_server_name); + } + /* Parse MachineType */ g_vfs_afp_reply_seek (reply, MachineType_offset, G_SEEK_SET); g_vfs_afp_reply_read_pascal (reply, &afp_serv->machine_type); @@ -704,7 +717,6 @@ get_server_info (GVfsAfpServer *afp_serv, AfpVersion afp_version; g_vfs_afp_reply_read_pascal (reply, &version); - g_debug ("version: %s\n", version); afp_version = string_to_afp_version (version); if (afp_version > afp_serv->version) afp_serv->version = afp_version; @@ -730,8 +742,7 @@ get_server_info (GVfsAfpServer *afp_serv, afp_serv->uams = g_slist_prepend (afp_serv->uams, uam); } - g_object_unref (reply); - + return TRUE; } @@ -876,9 +887,7 @@ try_login: g_free (user); g_free (password); - g_debug ("ASDASD!!!\n"); g_propagate_error (error, err); - g_debug ("ASDASD2!!!\n"); return FALSE; } @@ -933,6 +942,9 @@ g_vfs_afp_server_finalize (GObject *object) g_free (afp_serv->machine_type); g_free (afp_serv->server_name); + if (afp_serv->utf8_server_name) + g_vfs_afp_name_unref (afp_serv->utf8_server_name); + g_slist_free_full (afp_serv->uams, g_free); G_OBJECT_CLASS (g_vfs_afp_server_parent_class)->finalize (object); |