static void event_nick(SERVER_REC *server, const char *data, const char *orignick) { QUERY_REC *query; char *params, *nick; query = query_find(server, orignick); if (query != NULL) { params = event_get_params(data, 1, &nick); if (strcmp(query->name, nick) != 0) query_change_nick(query, nick); g_free(params); } }
static void event_nick(IRC_SERVER_REC *server, const char *data, const char *orignick) { QUERY_REC *query; CHAT_DCC_REC *dcc; char *params, *nick, *tag; g_return_if_fail(data != NULL); g_return_if_fail(orignick != NULL); params = event_get_params(data, 1, &nick); if (g_ascii_strcasecmp(nick, orignick) == 0) { /* shouldn't happen, but just to be sure irssi doesn't get into infinite loop */ g_free(params); return; } while ((dcc = dcc_chat_find_nick(server, orignick)) != NULL) { g_free(dcc->nick); dcc->nick = g_strdup(nick); tag = g_strconcat("=", dcc->id, NULL); query = irc_query_find(server, tag); g_free(tag); /* change the id too */ g_free(dcc->id); dcc->id = NULL; dcc->id = dcc_chat_get_new_id(nick); if (query != NULL) { tag = g_strconcat("=", dcc->id, NULL); query_change_nick(query, tag); g_free(tag); } } g_free(params); }
static void check_query_changes(IRC_SERVER_REC *server, const char *nick, const char *address, const char *target) { QUERY_REC *query; if (ischannel(*target)) return; query = irc_query_find(server, nick); if (query == NULL) return; if (strcmp(query->name, nick) != 0) { /* upper/lowercase chars in nick changed */ query_change_nick(query, nick); } if (query->address == NULL || strcmp(query->address, address) != 0) { /* host changed */ query_change_address(query, address); } }