diff src/buddy_chat.c @ 2632:11badfae115c

[gaim-migrate @ 2645] (23:26:04) Linux226: This is all odd to me. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sun, 28 Oct 2001 06:26:34 +0000
parents a2cf3cac7e66
children 7a3f7aebd4e5
line wrap: on
line diff
--- a/src/buddy_chat.c	Sat Oct 27 23:46:12 2001 +0000
+++ b/src/buddy_chat.c	Sun Oct 28 06:26:34 2001 +0000
@@ -53,6 +53,27 @@
 GtkWidget *all_chats = NULL;
 GtkWidget *chat_notebook = NULL;
 
+static char *ignored(struct conversation *b, char *who)
+{
+	GList *ignore = b->ignored;
+	while (ignore) {
+		char *ign = ignore->data;
+		if (!g_strcasecmp(who, ign))
+			return ign;
+		if (*ign == '+' && !g_strcasecmp(who, ign + 1))
+			return ign;
+		if (*ign == '@') {
+			ign++;
+			if (*ign == '+' && !g_strcasecmp(who, ign + 1))
+				return ign;
+			if (*ign != '+' && !g_strcasecmp(who, ign))
+				return ign;
+		}
+		ignore = ignore->next;
+	}
+	return NULL;
+}
+
 
 static void destroy_join_chat()
 {
@@ -669,7 +690,6 @@
 
 void chat_write(struct conversation *b, char *who, int flag, char *message, time_t mtime)
 {
-	GList *ignore = b->ignored;
 	char *str;
 
 	if (!b->is_chat) {
@@ -677,22 +697,8 @@
 		return;
 	}
 
-	while (ignore) {
-		char *ign = ignore->data;
-		if (!g_strcasecmp(who, ign))
-			return;
-		if (*ign == '+' && !g_strcasecmp(who, ign + 1))
-			return;
-		if (*ign == '@') {
-			ign++;
-			if (*ign == '+' && !g_strcasecmp(who, ign + 1))
-				return;
-			if (*ign != '+' && !g_strcasecmp(who, ign))
-				return;
-		}
-		ignore = ignore->next;
-	}
-
+	if (ignored(b, who))
+		return;
 
 	if (!(flag & WFLAG_WHISPER)) {
 		str = g_strdup(normalize (who));
@@ -817,7 +823,7 @@
 		gtk_menu_append(GTK_MENU(menu), button);
 		gtk_widget_show(button);
 
-		if (g_list_find_custom(b->ignored, gtk_object_get_user_data(obj), (GCompareFunc)strcmp))
+		if (ignored(b, gtk_object_get_user_data(obj)))
 			button = gtk_menu_item_new_with_label(_("Un-Ignore"));
 		else
 			button = gtk_menu_item_new_with_label(_("Ignore"));
@@ -847,20 +853,12 @@
 	char tmp[BUF_LONG];
 	GtkWidget *list_item;
 	int pos;
-	GList *ignored;
 
 	plugin_event(event_chat_buddy_join, b->gc, (void *)b->id, name, 0);
 	b->in_room = g_list_insert_sorted(b->in_room, name, insertname);
 	pos = g_list_index(b->in_room, name);
 
-	ignored = b->ignored;
-	while (ignored) {
-		if (!g_strcasecmp(name, ignored->data))
-			 break;
-		ignored = ignored->next;
-	}
-
-	if (ignored) {
+	if (ignored(b, buddy)) {
 		g_snprintf(tmp, sizeof(tmp), "X %s", name);
 		list_item = gtk_list_item_new_with_label(tmp);
 	} else
@@ -893,8 +891,8 @@
 
 	char *name = g_strdup(new);
 	GtkWidget *list_item;
+	char *ign;
 	int pos;
-	GList *ignored = b->ignored;
 
 	char tmp[BUF_LONG];
 
@@ -924,16 +922,19 @@
 	b->in_room = g_list_insert_sorted(b->in_room, name, insertname);
 	pos = g_list_index(b->in_room, name);
 
-	while (ignored) {
-		if (!g_strcasecmp(old, ignored->data))
-			break;
-		ignored = ignored->next;
-	}
+	ign = ignored(b, old);
+
+	if (ign) {
+		g_free(ign);
+		b->ignored = g_list_remove(b->ignored, ign);
 
-	if (ignored) {
-		g_free(ignored->data);
-		b->ignored = g_list_remove(b->ignored, ignored->data);
-		b->ignored = g_list_append(b->ignored, g_strdup(name));
+		/* we haven't added them yet. if we find them, don't add them again */
+		if (!ignored(b, new))
+			b->ignored = g_list_append(b->ignored, g_strdup(name));
+
+		g_snprintf(tmp, sizeof(tmp), "X %s", name);
+		list_item = gtk_list_item_new_with_label(tmp);
+	} else if (ignored(b, new)) {
 		g_snprintf(tmp, sizeof(tmp), "X %s", name);
 		list_item = gtk_list_item_new_with_label(tmp);
 	} else
@@ -1025,7 +1026,8 @@
 void ignore_callback(GtkWidget *w, struct conversation *b)
 {
 	char *name;
-	GList *i, *ignored;
+	GList *i;
+	char *ign;
 	int pos;
 	GtkWidget *list_item;
 	char tmp[80];
@@ -1039,16 +1041,11 @@
 
 	pos = gtk_list_child_position(GTK_LIST(b->list), i->data);
 
-	ignored = b->ignored;
-	while (ignored) {
-		if (!g_strcasecmp(name, ignored->data))
-			 break;
-		ignored = ignored->next;
-	}
+	ign = ignored(b, name);
 
-	if (ignored) {
-		g_free(ignored->data);
-		b->ignored = g_list_remove(b->ignored, ignored->data);
+	if (ign) {
+		g_free(ign);
+		b->ignored = g_list_remove(b->ignored, ign);
 		g_snprintf(tmp, sizeof tmp, "%s", name);
 	} else {
 		b->ignored = g_list_append(b->ignored, g_strdup(name));
@@ -1477,16 +1474,9 @@
 			while (r) {
 				char *name = r->data;
 				GtkWidget *list_item;
-				GList *ignored = c->ignored;
 				char tmp[BUF_LONG];
 
-				while (ignored) {
-					if (!g_strcasecmp(name, ignored->data))
-						 break;
-					ignored = ignored->next;
-				}
-
-				if (ignored) {
+				if (ignored(c, name)) {
 					g_snprintf(tmp, sizeof(tmp), "X %s", name);
 					list_item = gtk_list_item_new_with_label(tmp);
 				} else
@@ -1526,16 +1516,9 @@
 			while (r) {
 				char *name = r->data;
 				GtkWidget *list_item;
-				GList *ignored = c->ignored;
 				char tmp[BUF_LONG];
 
-				while (ignored) {
-					if (!g_strcasecmp(name, ignored->data))
-						 break;
-					ignored = ignored->next;
-				}
-
-				if (ignored) {
+				if (ignored(c, name)) {
 					g_snprintf(tmp, sizeof(tmp), "X %s", name);
 					list_item = gtk_list_item_new_with_label(tmp);
 				} else