Merged from silc_1_0_branch.
[silc.git] / apps / irssi / src / silc / core / silc-nicklist.c
index 9ffa113822fcda07c193dc2b7a46ee90e30f98f9..a8c302bca499c9fb424caced1af589bcdd811842 100644 (file)
@@ -36,7 +36,9 @@ SILC_NICK_REC *silc_nicklist_insert(SILC_CHANNEL_REC *channel,
 
   rec = g_new0(SILC_NICK_REC, 1);
   rec->nick = g_strdup(user->client->nickname);
-  rec->host = g_strdup(user->client->username);
+  rec->host = g_strdup_printf("%s@%s", user->client->username,
+                             user->client->hostname);
+  rec->realname = g_strdup(user->client->realname);
   rec->silc_user = user;
   rec->unique_id = user->client;
 
@@ -53,6 +55,9 @@ SILC_NICK_REC *silc_nicklist_insert(SILC_CHANNEL_REC *channel,
 SILC_NICK_REC *silc_nicklist_find(SILC_CHANNEL_REC *channel,
                                  SilcClientEntry client)
 {
+  if (!client || !client->nickname)
+    return NULL;
+
   return (SILC_NICK_REC *)nicklist_find_unique(CHANNEL(channel),
                                               client->nickname, client);
 }
@@ -121,6 +126,11 @@ static void sig_connected(SILC_SERVER_REC *server)
     server->get_nick_flags = (void *) get_nick_flags;
 }
 
+void silc_change_nick(SILC_SERVER_REC *server, const char *newnick)
+{
+  server_change_nick((SERVER_REC *)server, newnick);
+}
+
 void silc_nicklist_init(void)
 {
   signal_add("server connected", (SIGNAL_FUNC) sig_connected);