Ejemplo n.º 1
0
Archivo: nicklist.c Proyecto: GPF/irssi
static void nicklist_rename_list(SERVER_REC *server, void *new_nick_id,
				 const char *old_nick, const char *new_nick,
				 GSList *nicks)
{
	CHANNEL_REC *channel;
	NICK_REC *nickrec;
	GSList *tmp;

	for (tmp = nicks; tmp != NULL; tmp = tmp->next->next) {
		channel = tmp->data;
		nickrec = tmp->next->data;

		/* remove old nick from hash table */
                nick_hash_remove(channel, nickrec);

		if (new_nick_id != NULL)
			nickrec->unique_id = new_nick_id;

		g_free(nickrec->nick);
		nickrec->nick = g_strdup(new_nick);

		/* add new nick to hash table */
                nick_hash_add(channel, nickrec);

		signal_emit("nicklist changed", 3, channel, nickrec, old_nick);
	}
	g_slist_free(nicks);
}
Ejemplo n.º 2
0
Archivo: nicklist.c Proyecto: GPF/irssi
/* Remove nick from list */
void nicklist_remove(CHANNEL_REC *channel, NICK_REC *nick)
{
	g_return_if_fail(IS_CHANNEL(channel));
	g_return_if_fail(nick != NULL);

        nick_hash_remove(channel, nick);
	nicklist_destroy(channel, nick);
}
Ejemplo n.º 3
0
void
xmpp_nicklist_rename(MUC_REC *channel, XMPP_NICK_REC *nick,
    const char *oldnick, const char *newnick)
{

	g_return_if_fail(IS_MUC(channel));
	g_return_if_fail(IS_XMPP_NICK(nick));
	g_return_if_fail(oldnick != NULL);
	g_return_if_fail(newnick != NULL);
	/* remove old nick from hash table */
	nick_hash_remove(CHANNEL(channel), NICK(nick));
	g_free(nick->nick);
	nick->nick = g_strdup(newnick);
	/* add new nick to hash table */
	nick_hash_add(CHANNEL(channel), NICK(nick));
	signal_emit("nicklist changed", 3, channel, nick, oldnick);
	if (strcmp(oldnick, channel->nick) == 0) {
		nicklist_set_own(CHANNEL(channel), NICK(nick));
		g_free(channel->nick);
		channel->nick = g_strdup(newnick);
	}
}