[gvfs] afp: use UTF-8 ServerName if available
- From: Christian Kellner <gicmo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gvfs] afp: use UTF-8 ServerName if available
- Date: Thu, 25 Aug 2011 19:22:42 +0000 (UTC)
commit aec7c42dc109e3cf19cfbe25c0a2b1aa6d56e8b0
Author: Carl-Anton Ingmarsson <ca ingmarsson gmail com>
Date: Mon Jun 20 12:52:14 2011 +0200
afp: use UTF-8 ServerName if available
daemon/gvfsafpconnection.c | 12 ++++++++++++
daemon/gvfsafpconnection.h | 2 ++
daemon/gvfsafpserver.c | 8 +++++---
daemon/gvfsafpserver.h | 2 +-
daemon/gvfsbackendafp.c | 10 ++++++++--
daemon/gvfsbackendafpbrowse.c | 10 ++++++++--
6 files changed, 36 insertions(+), 8 deletions(-)
---
diff --git a/daemon/gvfsafpconnection.c b/daemon/gvfsafpconnection.c
index 4745406..a10eea6 100644
--- a/daemon/gvfsafpconnection.c
+++ b/daemon/gvfsafpconnection.c
@@ -50,6 +50,18 @@ g_vfs_afp_name_ref (GVfsAfpName *afp_name)
g_atomic_int_inc (&afp_name->ref_count);
}
+char *
+g_vfs_afp_name_get_string (GVfsAfpName *afp_name)
+{
+ char *str;
+
+ str = g_malloc (afp_name->len + 1);
+ memcpy (str, afp_name->str, afp_name->len);
+ str[afp_name->len] = 0;
+
+ return str;
+}
+
GVfsAfpName *
g_vfs_afp_name_new (guint32 text_encoding, const gchar *str, gsize len)
{
diff --git a/daemon/gvfsafpconnection.h b/daemon/gvfsafpconnection.h
index f508bc0..3f92c9b 100644
--- a/daemon/gvfsafpconnection.h
+++ b/daemon/gvfsafpconnection.h
@@ -229,6 +229,8 @@ GVfsAfpName* g_vfs_afp_name_new_from_gstring (guint32 text_encoding, GString *st
void g_vfs_afp_name_unref (GVfsAfpName *afp_name);
void g_vfs_afp_name_ref (GVfsAfpName *afp_name);
+char* g_vfs_afp_name_get_string (GVfsAfpName *afp_name);
+
/*
* GVfsAfpReply
*/
diff --git a/daemon/gvfsafpserver.c b/daemon/gvfsafpserver.c
index 504e25c..d76b8f0 100644
--- a/daemon/gvfsafpserver.c
+++ b/daemon/gvfsafpserver.c
@@ -695,13 +695,16 @@ get_server_info (GVfsAfpServer *afp_serv,
/* Parse UTF-8 ServerName */
if (afp_serv->flags & (0x1 << 8)) {
guint16 UTF8ServerName_offset;
+ GVfsAfpName *utf8_server_name;
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);
+ g_vfs_afp_reply_read_afp_name (reply, FALSE, &utf8_server_name);
+ afp_serv->utf8_server_name = g_vfs_afp_name_get_string (utf8_server_name);
+ g_vfs_afp_name_unref (utf8_server_name);
}
/* Parse MachineType */
@@ -942,8 +945,7 @@ 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_free (afp_serv->utf8_server_name);
g_slist_free_full (afp_serv->uams, g_free);
diff --git a/daemon/gvfsafpserver.h b/daemon/gvfsafpserver.h
index 0357ddf..545997a 100644
--- a/daemon/gvfsafpserver.h
+++ b/daemon/gvfsafpserver.h
@@ -64,7 +64,7 @@ struct _GVfsAfpServer
guint16 flags;
char *machine_type;
char *server_name;
- GVfsAfpName *utf8_server_name;
+ char *utf8_server_name;
GSList *uams;
AfpVersion version;
};
diff --git a/daemon/gvfsbackendafp.c b/daemon/gvfsbackendafp.c
index b8faa98..b17a029 100644
--- a/daemon/gvfsbackendafp.c
+++ b/daemon/gvfsbackendafp.c
@@ -222,6 +222,7 @@ do_mount (GVfsBackend *backend,
AfpResultCode res_code;
GMountSpec *afp_mount_spec;
+ char *server_name;
char *display_name;
afp_backend->server = g_vfs_afp_server_new (afp_backend->addr);
@@ -282,13 +283,18 @@ do_mount (GVfsBackend *backend,
g_vfs_backend_set_mount_spec (backend, afp_mount_spec);
g_mount_spec_unref (afp_mount_spec);
+ if (afp_backend->server->utf8_server_name)
+ server_name = afp_backend->server->utf8_server_name;
+ else
+ server_name = afp_backend->server->server_name;
+
if (afp_backend->user)
display_name = g_strdup_printf (_("AFP volume %s for %s on %s"),
afp_backend->volume, afp_backend->user,
- afp_backend->server->server_name);
+ server_name);
else
display_name = g_strdup_printf (_("AFP volume %s on %s"),
- afp_backend->volume, afp_backend->server->server_name);
+ afp_backend->volume, server_name);
g_vfs_backend_set_display_name (backend, display_name);
g_free (display_name);
diff --git a/daemon/gvfsbackendafpbrowse.c b/daemon/gvfsbackendafpbrowse.c
index 02b9ab9..db9ed62 100644
--- a/daemon/gvfsbackendafpbrowse.c
+++ b/daemon/gvfsbackendafpbrowse.c
@@ -444,6 +444,7 @@ do_mount (GVfsBackend *backend,
GError *err = NULL;
GMountSpec *afp_mount_spec;
+ char *server_name;
char *display_name;
afp_backend->server = g_vfs_afp_server_new (afp_backend->addr);
@@ -463,12 +464,17 @@ do_mount (GVfsBackend *backend,
g_vfs_backend_set_mount_spec (backend, afp_mount_spec);
g_mount_spec_unref (afp_mount_spec);
+ if (afp_backend->server->utf8_server_name)
+ server_name = afp_backend->server->utf8_server_name;
+ else
+ server_name = afp_backend->server->server_name;
+
if (afp_backend->user)
display_name = g_strdup_printf (_("AFP shares for %s on %s"), afp_backend->user,
- afp_backend->server->server_name);
+ server_name);
else
display_name = g_strdup_printf (_("AFP shares on %s"),
- afp_backend->server->server_name);
+ server_name);
g_vfs_backend_set_display_name (backend, display_name);
g_free (display_name);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]