diff src/protocols/oscar/oscar.c @ 6695:0c5637b5462e

[gaim-migrate @ 7221] This is contact support. Really. It has a few bugs left in it, like sorting not working, and stuff like that, but it's pretty solid for the most part. I'm not in the mood to do a whole lot of typing, so just use and enjoy. committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Tue, 02 Sep 2003 03:41:10 +0000
parents 314111e7b601
children faa491042c66
line wrap: on
line diff
--- a/src/protocols/oscar/oscar.c	Tue Sep 02 03:34:37 2003 +0000
+++ b/src/protocols/oscar/oscar.c	Tue Sep 02 03:41:10 2003 +0000
@@ -1832,7 +1832,7 @@
 	/* Server stored icon stuff */
 	if (info->iconcsumlen) {
 		char *b16, *saved_b16;
-		struct buddy *b;
+		GaimBuddy *b;
 
 		free(bi->iconcsum);
 		bi->iconcsum = malloc(info->iconcsumlen);
@@ -2436,8 +2436,8 @@
 
 	if (g_list_find(gaim_connections_get_all(), gc)) {
 		struct oscar_data *od = gc->proto_data;
-		struct buddy *buddy = gaim_find_buddy(gc->account, data->name);
-		struct group *group = gaim_find_buddys_group(buddy);
+		GaimBuddy *buddy = gaim_find_buddy(gc->account, data->name);
+		GaimGroup *group = gaim_find_buddys_group(buddy);
 		if (buddy && group) {
 			gaim_debug(GAIM_DEBUG_INFO, "oscar",
 					   "ssi: adding buddy %s to group %s\n",
@@ -2470,7 +2470,7 @@
 
 static void gaim_auth_sendrequest(GaimConnection *gc, const char *name) {
 	struct name_data *data = g_new(struct name_data, 1);
-	struct buddy *buddy;
+	GaimBuddy *buddy;
 	gchar *dialog_msg, *nombre;
 
 	buddy = gaim_find_buddy(gc->account, name);
@@ -2501,7 +2501,7 @@
 	if (g_list_find(gaim_connections_get_all(), gc)) {
 		struct oscar_data *od = gc->proto_data;
 #ifdef NOSSI
-		struct buddy *buddy;
+		GaimBuddy *buddy;
 		gchar message;
 		message = 0;
 		buddy = gaim_find_buddy(gc->account, data->name);
@@ -3511,7 +3511,7 @@
 
 	if (iconlen > 0) {
 		char *b16;
-		struct buddy *b = gaim_find_buddy(gc->account, sn);
+		GaimBuddy *b = gaim_find_buddy(gc->account, sn);
 		set_icon_data(gc, sn, icon, iconlen);
 		b16 = tobase16(iconcsum, iconcsumlen);
 		if (b16) {
@@ -4056,7 +4056,7 @@
 {
 	GaimConnection *gc = sess->aux_data;
 	gchar who[16], *utf8;
-	struct buddy *b;
+	GaimBuddy *b;
 	va_list ap;
 	struct aim_icq_info *info;
 
@@ -4415,7 +4415,7 @@
 static void oscar_get_away(GaimConnection *g, const char *who) {
 	struct oscar_data *od = (struct oscar_data *)g->proto_data;
 	if (od->icq) {
-		struct buddy *budlight = gaim_find_buddy(g->account, who);
+		GaimBuddy *budlight = gaim_find_buddy(g->account, who);
 		if (budlight)
 			if ((budlight->uc & 0xffff0000) >> 16)
 				aim_im_sendch2_geticqaway(od->sess, who, (budlight->uc & 0xffff0000) >> 16);
@@ -4639,8 +4639,8 @@
 	aim_add_buddy(od->sess, od->conn, name);
 #else
 	if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_exists(od->sess->ssi.local, name))) {
-		struct buddy *buddy = gaim_find_buddy(gc->account, name);
-		struct group *group = gaim_find_buddys_group(buddy);
+		GaimBuddy *buddy = gaim_find_buddy(gc->account, name);
+		GaimGroup *group = gaim_find_buddys_group(buddy);
 		if (buddy && group) {
 			gaim_debug(GAIM_DEBUG_INFO, "oscar",
 					   "ssi: adding buddy %s to group %s\n", name, group->name);
@@ -4669,8 +4669,8 @@
 #else
 	if (od->sess->ssi.received_data) {
 		while (buddies) {
-			struct buddy *buddy = gaim_find_buddy(gc->account, (const char *)buddies->data);
-			struct group *group = gaim_find_buddys_group(buddy);
+			GaimBuddy *buddy = gaim_find_buddy(gc->account, (const char *)buddies->data);
+			GaimGroup *group = gaim_find_buddys_group(buddy);
 			if (buddy && group) {
 				gaim_debug(GAIM_DEBUG_INFO, "oscar",
 						   "ssi: adding buddy %s to group %s\n", (const char *)buddies->data, group->name);
@@ -4849,7 +4849,7 @@
 					char *gname_utf8 = gaim_try_conv_to_utf8(gname);
 					char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name);
 					char *alias_utf8 = gaim_try_conv_to_utf8(alias);
-					struct buddy *buddy = gaim_find_buddy(gc->account, curitem->name);
+					GaimBuddy *buddy = gaim_find_buddy(gc->account, curitem->name);
 					/* Should gname be freed here? -- elb */
 					/* Not with the current code, but that might be cleaner -- med */
 					free(alias);
@@ -4860,7 +4860,7 @@
 							buddy->alias = g_strdup(alias_utf8);
 						}
 					} else {
-						struct group *g;
+						GaimGroup *g;
 						buddy = gaim_buddy_new(gc->account, curitem->name, alias_utf8);
 
 						if (!(g = gaim_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
@@ -4870,7 +4870,7 @@
 
 						gaim_debug(GAIM_DEBUG_INFO, "oscar",
 								   "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname_utf8 ? gname_utf8 : _("Orphans"));
-						gaim_blist_add_buddy(buddy, g, NULL);
+						gaim_blist_add_buddy(buddy, NULL, g, NULL);
 						export = TRUE;
 					}
 					free(gname_utf8);
@@ -4935,9 +4935,9 @@
 		gaim_blist_save();
 
 	{ /* Add from local list to server list */
-		GaimBlistNode *gnode, *bnode;
-		struct group *group;
-		struct buddy *buddy;
+		GaimBlistNode *gnode, *cnode, *bnode;
+		GaimGroup *group;
+		GaimBuddy *buddy;
 		struct gaim_buddy_list *blist;
 		GSList *cur;
 
@@ -4946,37 +4946,42 @@
 			for (gnode = blist->root; gnode; gnode = gnode->next) {
 				if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
 					continue;
-				group = (struct group *)gnode;
-				for (bnode = gnode->child; bnode; bnode = bnode->next) {
-					if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
+				group = (GaimGroup *)gnode;
+				for (cnode = gnode->child; cnode; cnode = cnode->next) {
+					if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
 						continue;
-					buddy = (struct buddy *)bnode;
-					if (buddy->account == gc->account) {
-						gchar *servernick = gaim_buddy_get_setting(buddy, "servernick");
-						if (servernick) {
-							serv_got_alias(gc, buddy->name, servernick);
-							g_free(servernick);
-						}
-						if (aim_ssi_itemlist_exists(sess->ssi.local, buddy->name)) {
-							/* Store local alias on server */
-							char *alias = aim_ssi_getalias(sess->ssi.local, group->name, buddy->name);
-							if (!alias && buddy->alias && strlen(buddy->alias))
-								aim_ssi_aliasbuddy(sess, group->name, buddy->name, buddy->alias);
-							free(alias);
-						} else {
-							gaim_debug(GAIM_DEBUG_INFO, "oscar",
-									   "ssi: adding buddy %s from local list to server list\n", buddy->name);
-							aim_ssi_addbuddy(sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0);
+					for (bnode = cnode->child; bnode; bnode = bnode->next) {
+						if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
+							continue;
+						buddy = (GaimBuddy *)bnode;
+						if (buddy->account == gc->account) {
+							gchar *servernick = gaim_buddy_get_setting(buddy, "servernick");
+							if (servernick) {
+								serv_got_alias(gc, buddy->name, servernick);
+								g_free(servernick);
+							}
+							if (aim_ssi_itemlist_exists(sess->ssi.local, buddy->name)) {
+								/* Store local alias on server */
+								char *alias = aim_ssi_getalias(sess->ssi.local, group->name, buddy->name);
+								if (!alias && buddy->alias && strlen(buddy->alias))
+									aim_ssi_aliasbuddy(sess, group->name, buddy->name, buddy->alias);
+								free(alias);
+							} else {
+								gaim_debug(GAIM_DEBUG_INFO, "oscar",
+										"ssi: adding buddy %s from local list to server list\n", buddy->name);
+								aim_ssi_addbuddy(sess, buddy->name, group->name, gaim_get_buddy_alias_only(buddy), NULL, NULL, 0);
+							}
 						}
 					}
 				}
 			}
+
 		/* Permit list */
 		if (gc->account->permit) {
 			for (cur=gc->account->permit; cur; cur=cur->next)
 				if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) {
 					gaim_debug(GAIM_DEBUG_INFO, "oscar",
-							   "ssi: adding permit %s from local list to server list\n", (char *)cur->data);
+							"ssi: adding permit %s from local list to server list\n", (char *)cur->data);
 					aim_ssi_addpermit(sess, cur->data);
 				}
 		}
@@ -4986,7 +4991,7 @@
 			for (cur=gc->account->deny; cur; cur=cur->next)
 				if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) {
 					gaim_debug(GAIM_DEBUG_INFO, "oscar",
-							   "ssi: adding deny %s from local list to server list\n", (char *)cur->data);
+							"ssi: adding deny %s from local list to server list\n", (char *)cur->data);
 					aim_ssi_adddeny(sess, cur->data);
 				}
 		}
@@ -5063,7 +5068,7 @@
 	char *sn, *msg;
 	gchar *dialog_msg, *nombre;
 	struct name_data *data;
-	struct buddy *buddy;
+	GaimBuddy *buddy;
 
 	va_start(ap, fr);
 	sn = va_arg(ap, char *);
@@ -5102,7 +5107,7 @@
 	char *sn, *msg;
 	gchar *dialog_msg, *nombre;
 	struct name_data *data;
-	struct buddy *buddy;
+	GaimBuddy *buddy;
 
 	va_start(ap, fr);
 	sn = va_arg(ap, char *);
@@ -5141,7 +5146,7 @@
 	char *sn, *msg;
 	gchar *dialog_msg, *nombre;
 	fu8_t reply;
-	struct buddy *buddy;
+	GaimBuddy *buddy;
 
 	va_start(ap, fr);
 	sn = va_arg(ap, char *);
@@ -5177,7 +5182,7 @@
 	GaimConnection *gc = sess->aux_data;
 	va_list ap;
 	char *sn;
-	struct buddy *buddy;
+	GaimBuddy *buddy;
 
 	va_start(ap, fr);
 	sn = va_arg(ap, char *);
@@ -5344,7 +5349,7 @@
 	return 0;
 }
 
-static const char *oscar_list_icon(GaimAccount *a, struct buddy *b) {
+static const char *oscar_list_icon(GaimAccount *a, GaimBuddy *b) {
 	if (!b || (b && b->name && b->name[0] == '+')) {
 		if (a != NULL && isdigit(*gaim_account_get_username(a)))
 			return "icq";
@@ -5357,7 +5362,7 @@
 	return "aim";
 }
 
-static void oscar_list_emblems(struct buddy *b, char **se, char **sw, char **nw, char **ne)
+static void oscar_list_emblems(GaimBuddy *b, char **se, char **sw, char **nw, char **ne)
 {
 	char *emblems[4] = {NULL,NULL,NULL,NULL};
 	int i = 0;
@@ -5413,7 +5418,7 @@
 	*ne = emblems[3];
 }
 
-static char *oscar_tooltip_text(struct buddy *b) {
+static char *oscar_tooltip_text(GaimBuddy *b) {
 	GaimConnection *gc = b->account->gc;
 	struct oscar_data *od = gc->proto_data;
 	struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, normalize(b->name));
@@ -5471,7 +5476,7 @@
 	return yay;
 }
 
-static char *oscar_status_text(struct buddy *b) {
+static char *oscar_status_text(GaimBuddy *b) {
 	GaimConnection *gc = b->account->gc;
 	struct oscar_data *od = gc->proto_data;
 	gchar *ret = NULL;
@@ -5896,7 +5901,7 @@
 		m = g_list_append(m, pbm);
 #endif
 	} else {
-		struct buddy *b = gaim_find_buddy(gc->account, who);
+		GaimBuddy *b = gaim_find_buddy(gc->account, who);
 		struct buddyinfo *bi;
 
 		if (b)
@@ -6022,29 +6027,33 @@
 {
 	struct oscar_data *od = gc->proto_data;
 	gchar *nombre, *text, *tmp;
-	GaimBlistNode *gnode,*bnode;
+	GaimBlistNode *gnode, *cnode, *bnode;
 	int num=0;
 
 	text = g_strdup(_("You are awaiting authorization from the following buddies:<BR>"));
 
 	for (gnode = gaim_get_blist()->root; gnode; gnode = gnode->next) {
-		struct group *group = (struct group *)gnode;
+		GaimGroup *group = (GaimGroup *)gnode;
 		if(!GAIM_BLIST_NODE_IS_GROUP(gnode))
 			continue;
-		for (bnode = gnode->child; bnode; bnode = bnode->next) {
-			struct buddy *buddy = (struct buddy *)bnode;
-			if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
+		for (cnode = gnode->child; cnode; cnode = cnode->next) {
+			if(!GAIM_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) {
-				if (gaim_get_buddy_alias_only(buddy))
-					nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_get_buddy_alias_only(buddy));
-				else
-					nombre = g_strdup_printf(" %s", buddy->name);
-				tmp = g_strdup_printf("%s<BR>%s", text, nombre);
-				g_free(text);
-				text = tmp;
-				g_free(nombre);
-				num++;
+			for (bnode = cnode->child; bnode; bnode = bnode->next) {
+				GaimBuddy *buddy = (GaimBuddy *)bnode;
+				if(!GAIM_BLIST_NODE_IS_BUDDY(bnode))
+					continue;
+				if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) {
+					if (gaim_get_buddy_alias_only(buddy))
+						nombre = g_strdup_printf(" %s (%s)", buddy->name, gaim_get_buddy_alias_only(buddy));
+					else
+						nombre = g_strdup_printf(" %s", buddy->name);
+					tmp = g_strdup_printf("%s<BR>%s", text, nombre);
+					g_free(text);
+					text = tmp;
+					g_free(nombre);
+					num++;
+				}
 			}
 		}
 	}