changeset 4065:1590dfa0ecba

[gaim-migrate @ 4275] (01:38:36) LSchiere: go fix some bug. give me something to be optimistic about (01:55:20) LSchiere: oh. i have a better bug for you to fix. fix the /kick bug (01:55:33) LSchiere: so that when you /kick someone in #gaim they don't appear to have been kicked in [other channels] I think this will fix that--it might just make things worse. Yay, beer! committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Thu, 12 Dec 2002 07:13:05 +0000
parents b188b93ebf48
children fd764830519c
files src/protocols/irc/irc.c
diffstat 1 files changed, 17 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/src/protocols/irc/irc.c	Thu Dec 12 04:03:53 2002 +0000
+++ b/src/protocols/irc/irc.c	Thu Dec 12 07:13:05 2002 +0000
@@ -1125,29 +1125,23 @@
 }
 
 static void 
-irc_rem_chat_bud(struct gaim_connection *gc, char *nick, char *reason)
+irc_rem_chat_bud(struct gaim_connection *gc, char *nick, struct conversation *b, char *reason)
 {
-	GSList *bcs = gc->buddy_chats;
-
-	while (bcs) {
-		struct conversation *b = bcs->data;
 
-		GList *r = b->in_room;
-		while (r) {
-			char *who = r->data;
-			if (*who == '@')
-				who++;
-			if (*who == '+')
-				who++;
-			if (!g_strcasecmp(who, nick)) {
-				char *tmp = g_strdup(r->data);
-				remove_chat_buddy(b, tmp, reason);
-				g_free(tmp);
-				break;
-			}
+	GList *r = b->in_room;
+	while (r) {
+		char *who = r->data;
+		if (*who == '@')
+			who++;
+		if (*who == '+')
+			who++;
+		if (!g_strcasecmp(who, nick)) {
+			char *tmp = g_strdup(r->data);
+			remove_chat_buddy(b, tmp, reason);
+			g_free(tmp);
+			break;
+		}
 			r = r->next;
-		}
-		bcs = bcs->next;
 	}
 }
 
@@ -1395,7 +1389,8 @@
 		} else {
 			char *reason = *word_eol[5] == ':' ? word_eol[5] + 1 : word_eol[5];
 			char *msg = g_strdup_printf(_("Kicked by %s: %s"), nick, reason);
-			irc_rem_chat_bud(gc, word[4], msg);
+			struct conversation *c = irc_find_chat(gc, word[3]);
+			irc_rem_chat_bud(gc, word[4], c, msg);
 			g_free(msg);
 		}
 	} else if (!strcmp(cmd, "KILL")) { /* */
@@ -1426,7 +1421,7 @@
 		}
 	} else if (!strcmp(cmd, "PONG")) { /* */
 	} else if (!strcmp(cmd, "QUIT")) {
-		irc_rem_chat_bud(gc, nick, *word_eol[3] == ':' ? word_eol[3] + 1 : word_eol[3]);
+		irc_rem_chat_bud(gc, nick, irc_find_chat(gc, word[3]), *word_eol[3] == ':' ? word_eol[3] + 1 : word_eol[3]);
 	} else if (!strcmp(cmd, "TOPIC")) {
 		irc_parse_topic(gc, nick, word, word_eol);
 	} else if (!strcmp(cmd, "WALLOPS")) { /* Don't know if a dialog box is the right way? */