diff options
-rw-r--r-- | daemon/gvfsafpconnection.c | 12 | ||||
-rw-r--r-- | daemon/gvfsafpconnection.h | 2 | ||||
-rw-r--r-- | daemon/gvfsafpserver.c | 8 | ||||
-rw-r--r-- | daemon/gvfsafpserver.h | 2 | ||||
-rw-r--r-- | daemon/gvfsbackendafp.c | 10 | ||||
-rw-r--r-- | daemon/gvfsbackendafpbrowse.c | 10 |
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); |