gobjectification: 4b4277d6: This should compile now.

qulogic at pidgin.im qulogic at pidgin.im
Sun Jan 9 20:36:44 EST 2011


----------------------------------------------------------------------
Revision: 4b4277d6fdceb21903066753a1937f034d42cec8
Parent:   bce7b60756eeaf80c9faa50d2f22e03a537b7bfe
Author:   qulogic at pidgin.im
Date:     01/09/11 19:46:15
Branch:   im.pidgin.gobjectification
URL: http://d.pidgin.im/viewmtn/revision/info/4b4277d6fdceb21903066753a1937f034d42cec8

Changelog: 

This should compile now.

Changes against parent bce7b60756eeaf80c9faa50d2f22e03a537b7bfe

  patched  libpurple/protocols/bonjour/bonjour.c
  patched  libpurple/protocols/bonjour/mdns_common.c
  patched  libpurple/protocols/jabber/google/gmail.c
  patched  libpurple/protocols/jabber/google/google.c
  patched  libpurple/protocols/jabber/google/google_presence.c
  patched  libpurple/protocols/jabber/google/google_roster.c
  patched  libpurple/protocols/msn/error.c
  patched  libpurple/protocols/msn/msg.c
  patched  libpurple/protocols/msn/msn.c
  patched  libpurple/protocols/msn/nexus.c
  patched  libpurple/protocols/msn/user.c
  patched  libpurple/protocols/oscar/authorization.c
  patched  libpurple/protocols/oscar/clientlogin.c
  patched  libpurple/protocols/oscar/oscar.c
  patched  libpurple/protocols/oscar/userinfo.c
  patched  libpurple/protocols/oscar/visibility.c
  patched  libpurple/protocols/zephyr/zephyr.c
  patched  pidgin/gtkblist.c
  patched  pidgin/gtkconv.c

-------------- next part --------------
============================================================
--- libpurple/protocols/msn/msn.c	246cb780ba201c9ce01b8c5c4343eaa4d440333c
+++ libpurple/protocols/msn/msn.c	70bdfe098d392af97685480e474407b70f769e58
@@ -527,7 +527,7 @@ msn_show_locations(PurplePluginAction *a
 
 	pc = (PurpleConnection *)action->context;
 	account = purple_connection_get_account(pc);
-	session = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
+	session = purple_object_get_protocol_data(PURPLE_OBJECT(pc));
 
 	fields = purple_request_fields_new();
 
@@ -592,7 +592,7 @@ enable_mpop_cb(PurpleConnection *pc)
 static void
 enable_mpop_cb(PurpleConnection *pc)
 {
-	MsnSession *session = purple_connection_get_protocol_data(pc);
+	MsnSession *session = purple_object_get_protocol_data(PURPLE_OBJECT(pc));
 
 	purple_debug_info("msn", "Enabling MPOP\n");
 
@@ -606,7 +606,7 @@ disable_mpop_cb(PurpleConnection *pc)
 disable_mpop_cb(PurpleConnection *pc)
 {
 	PurpleAccount *account = purple_connection_get_account(pc);
-	MsnSession *session = purple_connection_get_protocol_data(pc);
+	MsnSession *session = purple_object_get_protocol_data(PURPLE_OBJECT(pc));
 	GSList *l;
 
 	purple_debug_info("msn", "Disabling MPOP\n");
============================================================
--- libpurple/protocols/oscar/oscar.c	05d0a7c2a540384a966b01d7bd3aad554bb35790
+++ libpurple/protocols/oscar/oscar.c	4442e09d27978a3ff36093a3341bb341a615a577
@@ -3469,7 +3469,7 @@ oscar_set_extended_status(PurpleConnecti
 static void
 oscar_set_extended_status(PurpleConnection *gc)
 {
-	aim_srv_setextrainfo(purple_connection_get_protocol_data(gc), TRUE, oscar_get_extended_status(gc), FALSE, NULL, NULL);
+	aim_srv_setextrainfo(purple_object_get_protocol_data(PURPLE_OBJECT(gc)), TRUE, oscar_get_extended_status(gc), FALSE, NULL, NULL);
 }
 
 static void
@@ -3594,7 +3594,7 @@ oscar_set_icq_permdeny(PurpleAccount *ac
 oscar_set_icq_permdeny(PurpleAccount *account)
 {
 	PurpleConnection *gc = purple_account_get_connection(account);
-	OscarData *od = purple_connection_get_protocol_data(gc);
+	OscarData *od = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	gboolean invisible = purple_account_is_status_active(account, OSCAR_STATUS_ID_INVISIBLE);
 
 	/*
============================================================
--- libpurple/protocols/zephyr/zephyr.c	aa3e1af8938b06d613c5ae95f180588f42d9511d
+++ libpurple/protocols/zephyr/zephyr.c	a3834b72c5580d42188abc5e3e5cb14c50e9c25b
@@ -347,7 +347,7 @@ static gchar *zephyr_recv_convert(Purple
 {
 	gchar *utf8;
 	GError *err = NULL;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	if (g_utf8_validate(string, -1, NULL)) {
 		return g_strdup(string);
 	} else {
@@ -762,7 +762,7 @@ static void handle_message(PurpleConnect
 
 static void handle_message(PurpleConnection *gc,ZNotice_t notice)
 {
-	zephyr_account* zephyr = gc->proto_data;
+	zephyr_account* zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 
 	if (!g_ascii_strcasecmp(notice.z_class, LOGIN_CLASS)) {
 		/* well, we'll be updating in 20 seconds anyway, might as well ignore this. */
@@ -777,9 +777,9 @@ static void handle_message(PurpleConnect
 			if (ZParseLocations(&notice, NULL, &nlocs, &user) != ZERR_NONE)
 				return;
 
-			if ((b = purple_find_buddy(gc->account, user)) == NULL) {
+			if ((b = purple_find_buddy(purple_connection_get_account(gc), user)) == NULL) {
 				char* stripped_user = zephyr_strip_local_realm(zephyr,user);
-				b = purple_find_buddy(gc->account,stripped_user);
+				b = purple_find_buddy(purple_connection_get_account(gc),stripped_user);
 				g_free(stripped_user);
 			}
 
@@ -812,9 +812,9 @@ static void handle_message(PurpleConnect
 				purple_notify_user_info_destroy(user_info);
 			} else {
 				if (nlocs>0)
-					purple_prpl_got_user_status(gc->account, b ? bname : user, "available", NULL);
+					purple_prpl_got_user_status(purple_connection_get_account(gc), b ? bname : user, "available", NULL);
 				else
-					purple_prpl_got_user_status(gc->account, b ? bname : user, "offline", NULL);
+					purple_prpl_got_user_status(purple_connection_get_account(gc), b ? bname : user, "offline", NULL);
 			}
 
 			g_free(user);
@@ -869,13 +869,13 @@ static void handle_message(PurpleConnect
 		} else {
 			zephyr_triple *zt1, *zt2;
 			gchar *send_inst_utf8;
-			zephyr_account *zephyr = gc->proto_data;
-			zt1 = new_triple(gc->proto_data,notice.z_class, notice.z_class_inst, notice.z_recipient);
-			zt2 = find_sub_by_triple(gc->proto_data,zt1);
+			zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
+			zt1 = new_triple(zephyr,notice.z_class, notice.z_class_inst, notice.z_recipient);
+			zt2 = find_sub_by_triple(zephyr,zt1);
 			if (!zt2) {
 				/* This is a server supplied subscription */
 				zephyr->subscrips = g_slist_append(zephyr->subscrips, new_triple(zephyr,zt1->class,zt1->instance,zt1->recipient));
-				zt2 = find_sub_by_triple(gc->proto_data,zt1);
+				zt2 = find_sub_by_triple(zephyr,zt1);
 			}
 
 			if (!zt2->open) {
@@ -897,7 +897,7 @@ static void handle_message(PurpleConnect
 			}
 
 			gconv1 = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT,
-														 zt2->name, gc->account);
+														 zt2->name, purple_connection_get_account(gc));
 			gcc = purple_conversation_get_chat_data(gconv1);
 #ifndef INET_ADDRSTRLEN
 #define INET_ADDRSTRLEN 16
@@ -1106,7 +1106,7 @@ static gint check_notify_tzc(gpointer da
 static gint check_notify_tzc(gpointer data)
 {
 	PurpleConnection *gc = (PurpleConnection *)data;
-	zephyr_account* zephyr = gc->proto_data;
+	zephyr_account* zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	parse_tree *newparsetree = read_from_tzc(zephyr);
 	if (newparsetree != NULL) {
 		gchar *spewtype;
@@ -1153,9 +1153,9 @@ static gint check_notify_tzc(gpointer da
 				gchar *locval;
 				user = tree_child(find_node(newparsetree,"user"),2)->contents;
 
-				if ((b = purple_find_buddy(gc->account, user)) == NULL) {
+				if ((b = purple_find_buddy(purple_connection_get_account(gc), user)) == NULL) {
 					gchar *stripped_user = zephyr_strip_local_realm(zephyr,user);
-					b = purple_find_buddy(gc->account, stripped_user);
+					b = purple_find_buddy(purple_connection_get_account(gc), stripped_user);
 					g_free(stripped_user);
 				}
 				locations = find_node(newparsetree,"locations");
@@ -1194,9 +1194,9 @@ static gint check_notify_tzc(gpointer da
 					purple_notify_user_info_destroy(user_info);
 				} else {
 					if (nlocs>0)
-						purple_prpl_got_user_status(gc->account, b ? bname : user, "available", NULL);
+						purple_prpl_got_user_status(purple_connection_get_account(gc), b ? bname : user, "available", NULL);
 					else
-						purple_prpl_got_user_status(gc->account, b ? bname : user, "offline", NULL);
+						purple_prpl_got_user_status(purple_connection_get_account(gc), b ? bname : user, "offline", NULL);
 				}
 			}
 			else if (!g_ascii_strncasecmp(spewtype,"subscribed",10)) {
@@ -1259,7 +1259,7 @@ static gint check_loc(gpointer data)
 	GSList *buddies;
 	ZLocations_t locations;
 	PurpleConnection *gc = data;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	PurpleAccount *account = purple_connection_get_account(gc);
 	int numlocs;
 	int one = 1;
@@ -1290,7 +1290,7 @@ static gint check_loc(gpointer data)
 	GSList *buddies;
 	ZAsyncLocateData_t ald;
 	PurpleConnection *gc = (PurpleConnection *)data;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	PurpleAccount *account = purple_connection_get_account(gc);
 
 	if (use_zeph02(zephyr)) {
@@ -1504,22 +1504,19 @@ static void process_anyone(PurpleConnect
 	PurpleGroup *g;
 	PurpleBuddy *b;
 
-	if (!(g = purple_find_group(_("Anyone")))) {
-		g = purple_group_new(_("Anyone"));
-		purple_blist_add_group(g, NULL);
-	}
+	g = purple_group_new(_("Anyone"));
 
 	filename = g_strconcat(purple_home_dir(), "/.anyone", NULL);
 	if ((fd = g_fopen(filename, "r")) != NULL) {
 		while (fgets(buff, BUFSIZ, fd)) {
 			strip_comments(buff);
 			if (buff[0]) {
-				if (!(b = purple_find_buddy(gc->account, buff))) {
-					char *stripped_user = zephyr_strip_local_realm(gc->proto_data,buff);
+				if (!(b = purple_find_buddy(purple_connection_get_account(gc), buff))) {
+					char *stripped_user = zephyr_strip_local_realm(purple_object_get_protocol_data(PURPLE_OBJECT(gc)),buff);
 					purple_debug_info("zephyr","stripped_user %s\n",stripped_user);
-					if (!(b = purple_find_buddy(gc->account,stripped_user))){
-						b = purple_buddy_new(gc->account, stripped_user, NULL);
-						purple_blist_add_buddy(b, NULL, g, NULL);
+					if (!(b = purple_find_buddy(purple_connection_get_account(gc),stripped_user))){
+						b = purple_buddy_new(purple_connection_get_account(gc), stripped_user,
+								NULL, PURPLE_BLIST_NODE(g));
 					}
 					g_free(stripped_user);
 				}
@@ -1557,28 +1554,30 @@ static void zephyr_login(PurpleAccount *
 	gchar *exposure;
 
 	gc = purple_account_get_connection(account);
-	read_anyone = purple_account_get_bool(gc->account,"read_anyone",TRUE);
-	read_zsubs = purple_account_get_bool(gc->account,"read_zsubs",TRUE);
-	exposure = (gchar *)purple_account_get_string(gc->account, "exposure_level", EXPOSE_REALMVIS);
+	read_anyone = purple_account_get_bool(account,"read_anyone",TRUE);
+	read_zsubs = purple_account_get_bool(account,"read_zsubs",TRUE);
+	exposure = (gchar *)purple_account_get_string(account, "exposure_level", EXPOSE_REALMVIS);
 
 #ifdef WIN32
 	username = purple_account_get_username(account);
 #endif
-	gc->flags |= PURPLE_CONNECTION_AUTO_RESP | PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_URLDESC;
-	gc->proto_data = zephyr=g_new0(zephyr_account,1);
+	purple_connection_turn_on_flags(gc,
+		PURPLE_CONNECTION_FLAGS_AUTO_RESP | PURPLE_CONNECTION_FLAGS_HTML | PURPLE_CONNECTION_FLAGS_NO_BGCOLOR | PURPLE_CONNECTION_FLAGS_NO_URLDESC);
+	zephyr = g_new0(zephyr_account, 1);
+	purple_object_set_protocol_data(PURPLE_OBJECT(gc), zephyr);
 
 	zephyr->account = account;
 
 	/* Make sure that the exposure (visibility) is set to a sane value */
 	zephyr->exposure=g_strdup(normalize_zephyr_exposure(exposure));
 
-	if (purple_account_get_bool(gc->account,"use_tzc",0)) {
+	if (purple_account_get_bool(account,"use_tzc",0)) {
 		zephyr->connection_type = PURPLE_ZEPHYR_TZC;
 	} else {
 		zephyr->connection_type = PURPLE_ZEPHYR_KRB4;
 	}
 
-	zephyr->encoding = (char *)purple_account_get_string(gc->account, "encoding", ZEPHYR_FALLBACK_CHARSET);
+	zephyr->encoding = (char *)purple_account_get_string(account, "encoding", ZEPHYR_FALLBACK_CHARSET);
 	purple_connection_update_progress(gc, _("Connecting"), 0, 8);
 
 	/* XXX z_call_s should actually try to report the com_err determined error */
@@ -1599,7 +1598,7 @@ static void zephyr_login(PurpleAccount *
 		if (pid == 0) {
 			unsigned int i=0;
 			gboolean found_ps = FALSE;
-			gchar ** tzc_cmd_array = g_strsplit(purple_account_get_string(gc->account,"tzc_command","/usr/bin/tzc -e %s")," ",0);
+			gchar ** tzc_cmd_array = g_strsplit(purple_account_get_string(purple_connection_get_account(gc),"tzc_command","/usr/bin/tzc -e %s")," ",0);
 			if (close(1) == -1) {
 				exit(-1);
 			}
@@ -1771,7 +1770,7 @@ static void zephyr_login(PurpleAccount *
 						if ((realm = strchr(username,'@')))
 							zephyr->realm = g_strdup_printf("%s",realm+1);
 						else {
-							realm = (gchar *)purple_account_get_string(gc->account,"realm","");
+							realm = (gchar *)purple_account_get_string(purple_connection_get_account(gc),"realm","");
 							if (!*realm) {
 								realm = "local-realm";
 							}
@@ -1808,7 +1807,7 @@ static void zephyr_login(PurpleAccount *
 		z_call_s(ZOpenPort(&(zephyr->port)), "Couldn't open port");
 		z_call_s(ZSetLocation((char *)zephyr->exposure), "Couldn't set location");
 
-		realm = (gchar *)purple_account_get_string(gc->account,"realm","");
+		realm = (gchar *)purple_account_get_string(purple_connection_get_account(gc),"realm","");
 		if (!*realm) {
 			realm = ZGetRealm();
 		}
@@ -1834,12 +1833,12 @@ static void zephyr_login(PurpleAccount *
 	if (zephyr_subscribe_to(zephyr,"MESSAGE","PERSONAL",zephyr->username,NULL) != ZERR_NONE) {
 		/* XXX don't translate this yet. It could be written better */
 		/* XXX error messages could be handled with more detail */
-		purple_notify_error(account->gc, NULL,
+		purple_notify_error(purple_account_get_connection(account), NULL,
 				  "Unable to subscribe to messages", "Unable to subscribe to initial messages");
 		return;
 	}
 
-	purple_connection_set_state(gc, PURPLE_CONNECTED);
+	purple_connection_set_state(gc, PURPLE_CONNECTION_STATE_CONNECTED);
 
 	if (read_anyone)
 		process_anyone(gc);
@@ -1930,7 +1929,7 @@ static void write_anyone(PurpleConnectio
 	char *fname;
 	FILE *fd;
 	PurpleAccount *account;
-	zephyr_account* zephyr = gc->proto_data;
+	zephyr_account* zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	fname = g_strdup_printf("%s/.anyone", purple_home_dir());
 	fd = g_fopen(fname, "w");
 	if (!fd) {
@@ -1955,7 +1954,7 @@ static void zephyr_close(PurpleConnectio
 {
 	GList *l;
 	GSList *s;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	pid_t tzc_pid = zephyr->tzc_pid;
 
 	l = zephyr->pending_zloc_names;
@@ -1965,11 +1964,11 @@ static void zephyr_close(PurpleConnectio
 	}
 	g_list_free(zephyr->pending_zloc_names);
 
-	if (purple_account_get_bool(gc->account, "write_anyone", FALSE))
+	if (purple_account_get_bool(purple_connection_get_account(gc), "write_anyone", FALSE))
 		write_anyone(gc);
 
-	if (purple_account_get_bool(gc->account, "write_zsubs", FALSE))
-		write_zsubs(gc->proto_data);
+	if (purple_account_get_bool(purple_connection_get_account(gc), "write_zsubs", FALSE))
+		write_zsubs(zephyr);
 
 	s = zephyr->subscrips;
 	while (s) {
@@ -2030,9 +2029,9 @@ static int zephyr_chat_send(PurpleConnec
 	PurpleConvChat *gcc;
 	char *inst;
 	char *recipient;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 
-	zt = find_sub_by_id(gc->proto_data,id);
+	zt = find_sub_by_id(zephyr,id);
 	if (!zt)
 		/* this should never happen. */
 		return -EINVAL;
@@ -2040,7 +2039,7 @@ static int zephyr_chat_send(PurpleConnec
 	sig = zephyr_get_signature();
 
 	gconv1 = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, zt->name,
-												 gc->account);
+												 purple_connection_get_account(gc));
 	gcc = purple_conversation_get_chat_data(gconv1);
 
 	if (!(inst = (char *)purple_conv_chat_get_topic(gcc)))
@@ -2059,7 +2058,7 @@ static int zephyr_send_im(PurpleConnecti
 static int zephyr_send_im(PurpleConnection * gc, const char *who, const char *im, PurpleMessageFlags flags)
 {
 	const char *sig;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	if (flags & PURPLE_MESSAGE_AUTO_RESP)
 		sig = "Automated reply:";
 	else {
@@ -2228,7 +2227,7 @@ static const char *zephyr_normalize(cons
 	if (gc == NULL)
 		return NULL;
 
-	tmp = local_zephyr_normalize(gc->proto_data, who);
+	tmp = local_zephyr_normalize(purple_object_get_protocol_data(PURPLE_OBJECT(gc)), who);
 
 	if (strlen(tmp) >= sizeof(buf)) {
 		g_free(tmp);
@@ -2244,7 +2243,7 @@ static void zephyr_zloc(PurpleConnection
 static void zephyr_zloc(PurpleConnection *gc, const char *who)
 {
 	ZAsyncLocateData_t ald;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	gchar* normalized_who = local_zephyr_normalize(zephyr,who);
 
 	if (use_zeph02(zephyr)) {
@@ -2271,7 +2270,7 @@ static void zephyr_set_status(PurpleAcco
 static void zephyr_set_status(PurpleAccount *account, PurpleStatus *status) {
 	size_t len;
 	size_t result;
-	zephyr_account *zephyr = purple_account_get_connection(account)->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(purple_account_get_connection(account)));
 	PurpleStatusPrimitive primitive = purple_status_type_get_primitive(purple_status_get_type(status));
 
 	if (zephyr->away) {
@@ -2339,7 +2338,7 @@ static GList *zephyr_status_types(Purple
 
 	type = purple_status_type_new_with_attrs(
 					       PURPLE_STATUS_AWAY, NULL, NULL, TRUE, TRUE, FALSE,
-					       "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+					       "message", _("Message"), purple_g_value_slice_new(G_TYPE_STRING),
 					       NULL);
 	types = g_list_append(types, type);
 
@@ -2405,7 +2404,7 @@ static void zephyr_join_chat(PurpleConne
 	const char *classname;
 	const char *instname;
 	const char *recip;
-	zephyr_account *zephyr=gc->proto_data;
+	zephyr_account *zephyr=purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	classname = g_hash_table_lookup(data, "class");
 	instname = g_hash_table_lookup(data, "instance");
 	recip = g_hash_table_lookup(data, "recipient");
@@ -2432,8 +2431,8 @@ static void zephyr_join_chat(PurpleConne
 	if (!g_ascii_strcasecmp(recip, "%me%"))
 		recip = zephyr->username;
 
-	zt1 = new_triple(gc->proto_data,classname, instname, recip);
-	zt2 = find_sub_by_triple(gc->proto_data,zt1);
+	zt1 = new_triple(zephyr,classname, instname, recip);
+	zt2 = find_sub_by_triple(zephyr,zt1);
 	if (zt2) {
 		free_triple(zt1);
 		if (!zt2->open) {
@@ -2468,7 +2467,7 @@ static void zephyr_chat_leave(PurpleConn
 static void zephyr_chat_leave(PurpleConnection * gc, int id)
 {
 	zephyr_triple *zt;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	zt = find_sub_by_id(zephyr,id);
 
 	if (zt) {
@@ -2483,15 +2482,15 @@ static PurpleChat *zephyr_find_blist_cha
 
 	/* XXX needs to be %host%,%canon%, and %me% clean */
 	for(gnode = purple_blist_get_root(); gnode;
-			gnode = purple_blist_node_get_sibling_next(gnode)) {
-		for(cnode = purple_blist_node_get_first_child(gnode);
+			gnode = purple_blist_node_next(gnode)) {
+		for(cnode = purple_blist_node_first_child(gnode);
 				cnode;
-				cnode = purple_blist_node_get_sibling_next(cnode)) {
+				cnode = purple_blist_node_next(cnode)) {
 			PurpleChat *chat = (PurpleChat*)cnode;
 			char *zclass, *inst, *recip;
 			char** triple;
 			GHashTable *components;
-			if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
+			if(!PURPLE_IS_CHAT(cnode))
 				continue;
 			if(purple_chat_get_account(chat) != account)
 				continue;
@@ -2518,7 +2517,7 @@ static unsigned int zephyr_send_typing(P
 
 static unsigned int zephyr_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state) {
 	gchar *recipient;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	if (use_tzc(zephyr))
 		return 0;
 
@@ -2560,15 +2559,15 @@ static void zephyr_chat_set_topic(Purple
 	PurpleConversation *gconv;
 	PurpleConvChat *gcc;
 	gchar *topic_utf8;
-	zephyr_account* zephyr = gc->proto_data;
+	zephyr_account* zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	char *sender = (char *)zephyr->username;
 
-	zt = find_sub_by_id(gc->proto_data,id);
+	zt = find_sub_by_id(zephyr,id);
 	/* find_sub_by_id can return NULL */
 	if (!zt)
 		return;
 	gconv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, zt->name,
-												gc->account);
+												purple_connection_get_account(gc));
 	gcc = purple_conversation_get_chat_data(gconv);
 
 	topic_utf8 = zephyr_recv_convert(gc,(gchar *)topic);
@@ -2583,7 +2582,7 @@ static PurpleCmdRet zephyr_purple_cmd_ms
 				      const char *cmd, char **args, char **error, void *data)
 {
 	char *recipient;
-	zephyr_account *zephyr = purple_conversation_get_gc(conv)->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(purple_conversation_get_gc(conv)));
 	if (!g_ascii_strcasecmp(args[0],"*"))
 		return PURPLE_CMD_RET_FAILED;  /* "*" is not a valid argument */
 	else
@@ -2613,7 +2612,7 @@ static PurpleCmdRet zephyr_purple_cmd_in
 	 * one word isn't ideal either.	 */
 
 	PurpleConvChat *gcc = purple_conversation_get_chat_data(conv);
-	int id = gcc->id;
+	int id = purple_conv_chat_get_id(gcc);
 	const char* instance = args[0];
 	zephyr_chat_set_topic(purple_conversation_get_gc(conv),id,instance);
 	return PURPLE_CMD_RET_OK;
@@ -2635,7 +2634,7 @@ static PurpleCmdRet zephyr_purple_cmd_zi
 				     const char *cmd, char **args, char **error, void *data)
 {
 	/* args = instance, message */
-	zephyr_account *zephyr = purple_conversation_get_gc(conv)->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(purple_conversation_get_gc(conv)));
 	if ( zephyr_send_message(zephyr,"message",args[0],"",args[1],zephyr_get_signature(),""))
 		return PURPLE_CMD_RET_OK;
 	else
@@ -2646,7 +2645,7 @@ static PurpleCmdRet zephyr_purple_cmd_zc
 				      const char *cmd, char **args, char **error, void *data)
 {
 	/* args = class, instance, message */
-	zephyr_account *zephyr = purple_conversation_get_gc(conv)->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(purple_conversation_get_gc(conv)));
 	if ( zephyr_send_message(zephyr,args[0],args[1],"",args[2],zephyr_get_signature(),""))
 		return PURPLE_CMD_RET_OK;
 	else
@@ -2657,7 +2656,7 @@ static PurpleCmdRet zephyr_purple_cmd_zc
 				       const char *cmd, char **args, char **error, void *data)
 {
 	/* args = class, instance, recipient, message */
-	zephyr_account *zephyr = purple_conversation_get_gc(conv)->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(purple_conversation_get_gc(conv)));
 	if ( zephyr_send_message(zephyr,args[0],args[1],args[2],args[3],zephyr_get_signature(),""))
 		return PURPLE_CMD_RET_OK;
 	else
@@ -2668,7 +2667,7 @@ static PurpleCmdRet zephyr_purple_cmd_zi
 				      const char *cmd, char **args, char **error, void *data)
 {
 	/* args = instance, recipient, message */
-	zephyr_account *zephyr = purple_conversation_get_gc(conv)->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(purple_conversation_get_gc(conv)));
 	if ( zephyr_send_message(zephyr,"message",args[0],args[1],args[2],zephyr_get_signature(),""))
 		return PURPLE_CMD_RET_OK;
 	else
@@ -2679,7 +2678,7 @@ static PurpleCmdRet zephyr_purple_cmd_zc
 				     const char *cmd, char **args, char **error, void *data)
 {
 	/* args = class, message */
-	zephyr_account *zephyr = purple_conversation_get_gc(conv)->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(purple_conversation_get_gc(conv)));
 	if ( zephyr_send_message(zephyr,args[0],"PERSONAL","",args[1],zephyr_get_signature(),""))
 		return PURPLE_CMD_RET_OK;
 	else
@@ -2760,7 +2759,7 @@ static int zephyr_resubscribe(PurpleConn
 {
 	/* Resubscribe to the in-memory list of subscriptions and also
 	   unsubscriptions*/
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	GSList *s = zephyr->subscrips;
 	zephyr_triple *zt;
 	while (s) {
@@ -2785,7 +2784,7 @@ static void zephyr_action_get_subs_from_
 static void zephyr_action_get_subs_from_server(PurplePluginAction *action)
 {
 	PurpleConnection *gc = (PurpleConnection *) action->context;
-	zephyr_account *zephyr = gc->proto_data;
+	zephyr_account *zephyr = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	gchar *title;
 	int retval, nsubs, one,i;
 	ZSubscription_t subs;
============================================================
--- pidgin/gtkconv.c	8f95bc697b220a182126450c8099938c84c7ab43
+++ pidgin/gtkconv.c	b5d12d024361a29a76f94a2e117eef2871c9fb4a
@@ -3929,7 +3929,7 @@ generate_send_to_items(PidginWindow *win
 						continue;
 
 					account = purple_buddy_get_account(buddy);
-					if (purple_account_is_connected(account) || account == gtkconv->active_conv->account)
+					if (purple_account_is_connected(account) || account == purple_conversation_get_account(gtkconv->active_conv))
 					{
 						/* Use the PurplePresence to get unique buddies. */
 						PurplePresence *presence = purple_buddy_get_presence(buddy);
@@ -8147,8 +8147,10 @@ pidgin_conversations_init(void)
 	hidden_convwin = pidgin_conv_window_new();
 	window_list = g_list_remove(window_list, hidden_convwin);
 
+#if 0 /* TODO: */
 	purple_signal_connect(purple_accounts_get_handle(), "account-status-changed",
                         handle, PURPLE_CALLBACK(account_status_changed_cb), NULL);
+#endif
 
 	/* Callbacks to update a conversation */
 	purple_signal_connect(blist_handle, "blist-node-added", handle,
============================================================
--- libpurple/protocols/msn/msg.c	bc31cc57d9d050e9d426879ceb71bf7fba423731
+++ libpurple/protocols/msn/msg.c	dfadfd23d2d38fa612a127e8295dc94d459311cb
@@ -749,7 +749,7 @@ msn_plain_msg(MsnCmdProc *cmdproc, MsnMe
 				swboard->flag |= MSN_SB_FLAG_IM;
 			}
 		}
-		else if (!g_str_equal(passport, purple_account_get_username(gc->account)))
+		else if (!g_str_equal(passport, purple_account_get_username(purple_connection_get_account(gc))))
 		{
 			/* Don't im ourselves ... */
 			serv_got_im(gc, passport, body_final, 0, time(NULL));
============================================================
--- pidgin/gtkblist.c	1e8022437a6f030b326c3a2413017938363205d7
+++ pidgin/gtkblist.c	10d4a3f838fbcf477ccf5009d9d9815b6019ebc4
@@ -1158,8 +1158,6 @@ static void gtk_blist_row_collapsed_cb(G
 
 	gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &node, -1);
 
-	node = g_value_get_pointer(&val);
-
 	if (PURPLE_IS_GROUP(node)) {
 		char *title;
 		struct _pidgin_blist_node *gtknode;
@@ -6055,8 +6053,9 @@ static void pidgin_blist_show(void)
 	purple_g_signal_connect(PURPLE_TYPE_ACCOUNT, "enable-changed",
 			G_CALLBACK(account_modified), gtkblist);
 
-	purple_signal_connect(handle, "account-removed", gtkblist,
-	                      PURPLE_CALLBACK(account_modified), gtkblist);
+	purple_g_signal_connect(PURPLE_TYPE_ACCOUNT, "destroying",
+			G_CALLBACK(account_modified), gtkblist);
+#if 0 /* TODO */
 	purple_signal_connect(handle, "account-status-changed", gtkblist,
 	                      PURPLE_CALLBACK(account_status_changed),
 	                      gtkblist);
@@ -6065,6 +6064,7 @@ static void pidgin_blist_show(void)
 	                      gtkblist);
 	purple_signal_connect(handle, "account-actions-changed", gtkblist,
 	                      PURPLE_CALLBACK(account_actions_changed), NULL);
+#endif
 
 	handle = pidgin_account_get_handle();
 	purple_signal_connect(handle, "account-modified", gtkblist,
============================================================
--- libpurple/protocols/msn/error.c	3af8a340453f47eb65c9f180023c9cc7c64d869c
+++ libpurple/protocols/msn/error.c	c0f7354a2d1ce1a2f4d239031b768cde7b0b1391
@@ -298,7 +298,7 @@ msn_complete_sync_issue(MsnAddRemData *d
 		buddy = purple_find_buddy(purple_connection_get_account(data->gc), data->who);
 
 	if (buddy != NULL)
-		purple_blist_remove_buddy(buddy);
+		purple_blist_node_remove(PURPLE_BLIST_NODE(buddy));
 }
 
 
@@ -312,7 +312,7 @@ msn_add_cb(MsnAddRemData *data)
 
 	if (g_list_find(purple_connections_get_all(), data->gc) != NULL)
 	{
-		MsnSession *session = data->gc->proto_data;
+		MsnSession *session = purple_object_get_protocol_data(PURPLE_OBJECT(data->gc));
 		MsnUserList *userlist = session->userlist;
 
 		msn_userlist_add_buddy(userlist, data->who, data->group);
@@ -330,7 +330,7 @@ msn_rem_cb(MsnAddRemData *data)
 
 	if (g_list_find(purple_connections_get_all(), data->gc) != NULL)
 	{
-		MsnSession *session = data->gc->proto_data;
+		MsnSession *session = purple_object_get_protocol_data(PURPLE_OBJECT(data->gc));
 		MsnUserList *userlist = session->userlist;
 
 		if (data->group == NULL) {
============================================================
--- libpurple/protocols/msn/user.c	252fcee3e9da8894a0718d13641088bbbe478a17
+++ libpurple/protocols/msn/user.c	9af09071db48bbc986d37b3c10fd2eccfe26c7f9
@@ -507,17 +507,14 @@ static gboolean
 }
 
 static gboolean
-buddy_icon_cached(PurpleConnection *gc, MsnObject *obj)
+buddy_icon_cached(PurpleAccount *account, MsnObject *obj)
 {
-	PurpleAccount *account;
 	PurpleBuddy *buddy;
 	const char *old;
 	const char *new;
 
 	g_return_val_if_fail(obj != NULL, FALSE);
 
-	account = purple_connection_get_account(gc);
-
 	buddy = purple_find_buddy(account, msn_object_get_creator(obj));
 	if (buddy == NULL)
 		return FALSE;
@@ -554,7 +551,7 @@ queue_buddy_icon_request(MsnUser *user)
 		return;
 	}
 
-	if (!buddy_icon_cached(account->gc, obj)) {
+	if (!buddy_icon_cached(account, obj)) {
 		MsnUserList *userlist;
 
 		userlist = user->userlist;
============================================================
--- libpurple/protocols/msn/nexus.c	fce3b372ad518cf5921b53564be540983cf27a82
+++ libpurple/protocols/msn/nexus.c	5d493e20c5e45693e8f68a081b638672c7370c22
@@ -23,7 +23,6 @@
  */
 
 #include "internal.h"
-#include "cipher.h"
 #include "debug.h"
 
 #include "soap.h"
============================================================
--- libpurple/protocols/bonjour/bonjour.c	797096279c9bd9b057bf059e5bfa16d8334b441a
+++ libpurple/protocols/bonjour/bonjour.c	edb99ee6e8ca97a6edd7cc50f6602b61cbedef9f
@@ -51,7 +51,7 @@ bonjour_get_jid(PurpleAccount *account)
 bonjour_get_jid(PurpleAccount *account)
 {
 	PurpleConnection *conn = purple_account_get_connection(account);
-	BonjourData *bd = conn->proto_data;
+	BonjourData *bd = purple_object_get_protocol_data(PURPLE_OBJECT(conn));
 	return bd->jid;
 }
 
============================================================
--- libpurple/protocols/bonjour/mdns_common.c	9ac6232226f1774d123022c929729861fb9be9e2
+++ libpurple/protocols/bonjour/mdns_common.c	a9c3e9d0468598d0f334dface7159a4d631c8eb9
@@ -257,7 +257,7 @@ bonjour_dns_sd_set_jid(PurpleAccount *ac
 bonjour_dns_sd_set_jid(PurpleAccount *account, const char *hostname)
 {
 	PurpleConnection *conn = purple_account_get_connection(account);
-	BonjourData *bd = conn->proto_data;
+	BonjourData *bd = purple_object_get_protocol_data(PURPLE_OBJECT(conn));
 	const char *tmp, *account_name = purple_account_get_username(account);
 
 	/* Previously we allowed the hostname part of the jid to be set
============================================================
--- libpurple/protocols/oscar/clientlogin.c	34d3d628d0ad315bab88c3aea9a78677ea2a329c
+++ libpurple/protocols/oscar/clientlogin.c	6f3ccc2173e0805e8066343e649db59c989e3c20
@@ -171,7 +171,7 @@ static gboolean parse_start_oscar_sessio
 
 static gboolean parse_start_oscar_session_response(PurpleConnection *gc, const gchar *response, gsize response_len, char **host, unsigned short *port, char **cookie, char **tls_certname)
 {
-	OscarData *od = purple_connection_get_protocol_data(gc);
+	OscarData *od = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	xmlnode *response_node, *tmp_node, *data_node;
 	xmlnode *host_node = NULL, *port_node = NULL, *cookie_node = NULL, *tls_node = NULL;
 	char *tmp;
@@ -423,7 +423,7 @@ static gboolean parse_client_login_respo
  */
 static gboolean parse_client_login_response(PurpleConnection *gc, const gchar *response, gsize response_len, char **token, char **secret, time_t *hosttime)
 {
-	OscarData *od = purple_connection_get_protocol_data(gc);
+	OscarData *od = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	xmlnode *response_node, *tmp_node, *data_node;
 	xmlnode *secret_node = NULL, *hosttime_node = NULL, *token_node = NULL, *tokena_node = NULL;
 	char *tmp;
============================================================
--- libpurple/protocols/jabber/google/gmail.c	43f78321281c20551cafab655e875153fa25bfff
+++ libpurple/protocols/jabber/google/gmail.c	2fac522ac20c1793ea76750257e758e6f419e047
@@ -150,7 +150,7 @@ jabber_gmail_poke(JabberStream *js, cons
 	JabberIq *iq;
 
 	/* bail if the user isn't interested */
-	if (!purple_account_get_check_mail(js->gc->account))
+	if (!purple_account_get_check_mail(purple_connection_get_account(js->gc)))
 		return;
 
 	/* Is this an initial incoming mail notification? If so, send a request for more info */
============================================================
--- libpurple/protocols/jabber/google/google.c	86b3dfd8e0d957502ff32565b095b5b997757a68
+++ libpurple/protocols/jabber/google/google.c	c7dcd38d8e9f7693509d5aaa9d69ad602bb62d52
@@ -152,12 +152,12 @@ void google_buddy_node_chat(PurpleBlistN
 	gchar *room;
 	gchar *uuid = purple_uuid_random();
 
-	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
+	g_return_if_fail(PURPLE_IS_BUDDY(node));
 
 	buddy = PURPLE_BUDDY(node);
 	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 	g_return_if_fail(gc != NULL);
-	js = purple_connection_get_protocol_data(gc);
+	js = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 
 	room = g_strdup_printf("private-chat-%s", uuid);
 	chat = jabber_join_chat(js, room, GOOGLE_GROUPCHAT_SERVER, js->user->node,
============================================================
--- libpurple/protocols/jabber/google/google_presence.c	cd0481a083e3568c8f489d260045bba8a28aac14
+++ libpurple/protocols/jabber/google/google_presence.c	ec479f7176443089fd8558e868604c027182f5b9
@@ -24,15 +24,17 @@ void jabber_google_presence_incoming(Jab
 
 void jabber_google_presence_incoming(JabberStream *js, const char *user, JabberBuddyResource *jbr)
 {
+	PurpleAccount *account;
 	if (!js->googletalk)
 		return;
+	account = purple_connection_get_account(js->gc);
 	if (jbr->status && purple_str_has_prefix(jbr->status, "? ")) {
-		purple_prpl_got_user_status(js->gc->account, user, "tune",
+		purple_prpl_got_user_status(account, user, "tune",
 					    PURPLE_TUNE_TITLE, jbr->status + strlen("? "), NULL);
 		g_free(jbr->status);
 		jbr->status = NULL;
 	} else {
-		purple_prpl_got_user_status_deactive(js->gc->account, user, "tune");
+		purple_prpl_got_user_status_deactive(account, user, "tune");
 	}
 }
 
@@ -41,3 +43,4 @@ char *jabber_google_presence_outgoing(Pu
 	const char *attr = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE);
 	return attr ? g_strdup_printf("? %s", attr) : g_strdup("");
 }
+
============================================================
--- libpurple/protocols/jabber/google/google_roster.c	2592d596e6007785b04d30c728ccf79711f62343
+++ libpurple/protocols/jabber/google/google_roster.c	0b7d6b336eb188340c74df4e5eae55f6ba6deaf8
@@ -75,7 +75,7 @@ gboolean jabber_google_roster_incoming(J
 			                  jid_norm);
 
 		for ( ; buddies; buddies = g_slist_delete_link(buddies, buddies)) {
-			purple_blist_remove_buddy(buddies->data);
+			purple_blist_node_remove(buddies->data);
 		}
 
 		g_free(jid_norm);
============================================================
--- libpurple/protocols/oscar/authorization.c	9b453d50f9c436df99b5979bf65538127ad7a61f
+++ libpurple/protocols/oscar/authorization.c	02a0d8d8ca79ed56f0db32c57de4a9cc86f02aa1
@@ -36,7 +36,7 @@ oscar_auth_request(struct name_data *dat
 	const char *bname, *gname;
 
 	gc = data->gc;
-	od = purple_connection_get_protocol_data(gc);
+	od = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	account = purple_connection_get_account(gc);
 	buddy = purple_find_buddy(account, data->name);
 	if (buddy != NULL)
@@ -75,7 +75,7 @@ oscar_auth_grant(gpointer cbdata)
 {
 	struct name_data *data = cbdata;
 	PurpleConnection *gc = data->gc;
-	OscarData *od = purple_connection_get_protocol_data(gc);
+	OscarData *od = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 
 	aim_ssi_sendauthreply(od, data->name, 0x01, NULL);
 
@@ -86,7 +86,7 @@ oscar_auth_dontgrant(struct name_data *d
 oscar_auth_dontgrant(struct name_data *data, char *msg)
 {
 	PurpleConnection *gc = data->gc;
-	OscarData *od = purple_connection_get_protocol_data(gc);
+	OscarData *od = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 
 	aim_ssi_sendauthreply(od, data->name, 0x00, msg ? msg : _("No reason given."));
 
@@ -129,7 +129,7 @@ oscar_auth_sendrequest_menu(PurpleBlistN
 	PurpleBuddy *buddy;
 	PurpleConnection *gc;
 
-	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
+	g_return_if_fail(PURPLE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
 	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
@@ -150,4 +150,4 @@ oscar_auth_recvrequest(PurpleConnection 
 	purple_account_request_authorization(account, data->name, NULL, data->nick,
 		reason, purple_find_buddy(account, data->name) != NULL,
 		oscar_auth_grant, oscar_auth_dontgrant_msgprompt, data);
-}
\ No newline at end of file
+}
============================================================
--- libpurple/protocols/oscar/userinfo.c	39fdfe7ec62dd0447aa30fa1f1f671c1cc667c2f
+++ libpurple/protocols/oscar/userinfo.c	2135c867cc37a4d2fa2be24af9b878d3049c2a6a
@@ -185,7 +185,7 @@ oscar_user_info_append_status(PurpleConn
 	gchar *message = NULL, *itmsurl = NULL, *tmp;
 	gboolean escaping_needed = TRUE;
 
-	od = purple_connection_get_protocol_data(gc);
+	od = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 
 	if (b == NULL && userinfo == NULL)
 		return;
@@ -316,7 +316,7 @@ oscar_user_info_append_extra_info(Purple
 	char *tmp;
 	const char *bname = NULL, *gname = NULL;
 
-	od = purple_connection_get_protocol_data(gc);
+	od = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	account = purple_connection_get_account(gc);
 
 	if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL)))
@@ -543,4 +543,4 @@ oscar_user_info_display_aim(OscarData *o
 
 	purple_notify_userinfo(gc, userinfo->bn, user_info, NULL, NULL);
 	purple_notify_user_info_destroy(user_info);
-}
\ No newline at end of file
+}
============================================================
--- libpurple/protocols/oscar/visibility.c	7d7fc088fd03e15792e8d9d7bef31a92bfd09846
+++ libpurple/protocols/oscar/visibility.c	8ee6b6e10fb080017f6fa097bf8eb3268c1b8890
@@ -59,7 +59,7 @@ visibility_cb(PurpleBlistNode *node, gpo
 {
 	PurpleBuddy *buddy = PURPLE_BUDDY(node);
 	const char* bname = purple_buddy_get_name(buddy);
-	OscarData *od = purple_connection_get_protocol_data(purple_account_get_connection(purple_buddy_get_account(buddy)));
+	OscarData *od = purple_object_get_protocol_data(PURPLE_OBJECT(purple_account_get_connection(purple_buddy_get_account(buddy))));
 	guint16 list_type = get_buddy_list_type(od);
 
 	if (!is_buddy_on_list(od, bname)) {
@@ -89,7 +89,7 @@ show_private_list(PurplePluginAction *ac
 show_private_list(PurplePluginAction *action, guint16 list_type, const gchar *title, const gchar *list_description, const gchar *menu_action_name)
 {
 	PurpleConnection *gc = (PurpleConnection *) action->context;
-	OscarData *od = purple_connection_get_protocol_data(gc);
+	OscarData *od = purple_object_get_protocol_data(PURPLE_OBJECT(gc));
 	PurpleAccount *account = purple_connection_get_account(gc);
 	GSList *buddies, *filtered_buddies, *cur;
 	gchar *text, *secondary;


More information about the Commits mailing list