summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--daemon/gvfsafpconnection.c12
-rw-r--r--daemon/gvfsafpconnection.h2
-rw-r--r--daemon/gvfsafpserver.c8
-rw-r--r--daemon/gvfsafpserver.h2
-rw-r--r--daemon/gvfsbackendafp.c10
-rw-r--r--daemon/gvfsbackendafpbrowse.c10
6 files changed, 36 insertions, 8 deletions
diff --git a/daemon/gvfsafpconnection.c b/daemon/gvfsafpconnection.c
index 4745406c..a10eea66 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 f508bc0d..3f92c9b2 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 504e25c6..d76b8f01 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 0357ddf8..545997a7 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 b8faa984..b17a0298 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 02b9ab92..db9ed629 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);