X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fsilc-nicklist.c;h=6d4b65f876ca3b7ec2086dfb2e81a0073d3467fa;hb=413da0f8686910f5e627393157566ae729ca99c4;hp=2a517db2a8a557d8e2b5e813f4cfe3052c369b22;hpb=70fceb1b71e76e1ff2719988cad63a9113b38641;p=silc.git diff --git a/apps/irssi/src/silc/core/silc-nicklist.c b/apps/irssi/src/silc/core/silc-nicklist.c index 2a517db2..6d4b65f8 100644 --- a/apps/irssi/src/silc/core/silc-nicklist.c +++ b/apps/irssi/src/silc/core/silc-nicklist.c @@ -1,7 +1,7 @@ /* silc-nicklist.c : irssi - Copyright (C) 2000 Timo Sirainen + Copyright (C) 2000, 2003 Timo Sirainen, Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,17 +32,24 @@ SILC_NICK_REC *silc_nicklist_insert(SILC_CHANNEL_REC *channel, SILC_NICK_REC *rec; g_return_val_if_fail(IS_SILC_CHANNEL(channel), NULL); - g_return_val_if_fail(user != NULL, NULL); + if (!user) + return NULL; + if (!user->client) + return NULL; + if (!user->client->nickname) + return NULL; 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; - if (user->mode & SILC_CHANNEL_UMODE_CHANOP) + if (user->mode & SILC_CHANNEL_UMODE_CHANOP) rec->op = TRUE; - if (user->mode & SILC_CHANNEL_UMODE_CHANFO) + if (user->mode & SILC_CHANNEL_UMODE_CHANFO) rec->founder = TRUE; rec->send_massjoin = send_massjoin; @@ -71,7 +78,7 @@ char *silc_nick_strip(const char *nick) char *stripped, *spos; g_return_val_if_fail(nick != NULL, NULL); - + spos = stripped = g_strdup(nick); while (isnickchar(*nick)) { if (isalnum((int) *nick)) @@ -97,15 +104,15 @@ int silc_nick_match(const char *nick, const char *msg) len = strlen(nick); if (g_strncasecmp(msg, nick, len) == 0 && !isalnum((int) msg[len])) return TRUE; - + stripnick = silc_nick_strip(nick); stripmsg = silc_nick_strip(msg); - + len = strlen(stripnick); ret = len > 0 && g_strncasecmp(stripmsg, stripnick, len) == 0 && !isalnum((int) stripmsg[len]) && (unsigned char) stripmsg[len] < 128; - + g_free(stripnick); g_free(stripmsg);