static void event_nick(IRC_SERVER_REC *server, const char *data, const char *orignick) { char *params, *nick; g_return_if_fail(data != NULL); g_return_if_fail(orignick != NULL); params = event_get_params(data, 1, &nick); if (g_ascii_strcasecmp(orignick, server->nick) == 0) { /* You changed your nick */ if (server->last_nick != NULL && g_ascii_strcasecmp(server->last_nick, nick) == 0) { /* changed with /NICK - keep it as wanted nick */ g_free(server->connrec->nick); server->connrec->nick = g_strdup(nick); } server_change_nick(SERVER(server), nick); } nicklist_rename(SERVER(server), orignick, nick); g_free(params); }
/* * args0 = "Name" * args1 = "<oldnick> changed nickname to <newnick>" */ static void status_name(ICB_SERVER_REC *server, char **args) { NICK_REC *nickrec; char *oldnick, *newnick, *p; oldnick = g_strdup(args[1]); p = strchr(oldnick, ' '); if (p != NULL) *p = '\0'; p = g_strdup(args[1]); newnick = strrchr(p, ' '); if (newnick != NULL) newnick++; nickrec = nicklist_find(CHANNEL(server->group), oldnick); if (nickrec != NULL) nicklist_rename(SERVER(server), oldnick, newnick); /* Update our own nick */ if (strcmp(oldnick, server->connrec->nick) == 0) { server_change_nick(SERVER(server), newnick); g_free(server->connrec->nick); server->connrec->nick = g_strdup(newnick); } g_free(oldnick); g_free(p); printformat(server, server->group->name, MSGLEVEL_CRAP, ICBTXT_STATUS, args[0], args[1]); }