pidgin.next.minor: 2f7e031f: Finished struct hiding in bonjour and qq
grim at pidgin.im
grim at pidgin.im
Sun Nov 2 06:10:29 EST 2008
-----------------------------------------------------------------
Revision: 2f7e031f2f4d6b6d516de0453a80f03cef41c195
Ancestor: d0b1119bfd235f8bd11c81f36dc9dc6421e68d8d
Author: grim at pidgin.im
Date: 2008-11-02T10:21:19
Branch: im.pidgin.pidgin.next.minor
URL: http://d.pidgin.im/viewmtn/revision/info/2f7e031f2f4d6b6d516de0453a80f03cef41c195
Modified files:
libpurple/protocols/bonjour/jabber.c
libpurple/protocols/qq/buddy_info.c
libpurple/protocols/qq/buddy_list.c
libpurple/protocols/qq/buddy_opt.c
libpurple/protocols/qq/group_internal.c
libpurple/protocols/qq/im.c libpurple/protocols/qq/qq.c
libpurple/protocols/qq/send_file.c
ChangeLog:
Finished struct hiding in bonjour and qq
-------------- next part --------------
============================================================
--- libpurple/protocols/bonjour/jabber.c c887dceaf76dcd5276b740de04b636e20f54785c
+++ libpurple/protocols/bonjour/jabber.c f63a5834d870372d1f545d26239a80e06e3feeb9
@@ -665,7 +665,7 @@ _server_socket_handler(gpointer data, in
mbba = g_new0(struct _match_buddies_by_address_t, 1);
mbba->address = address_text;
mbba->jdata = jdata;
- g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba);
+ g_hash_table_foreach(purple_blist_get_buddies(), _match_buddies_by_address, mbba);
if (mbba->matched_buddies == NULL) {
purple_debug_info("bonjour", "We don't like invisible buddies, this is not a superheros comic\n");
@@ -875,7 +875,7 @@ bonjour_jabber_conv_match_by_ip(BonjourJ
mbba = g_new0(struct _match_buddies_by_address_t, 1);
mbba->address = bconv->ip;
mbba->jdata = jdata;
- g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba);
+ g_hash_table_foreach(purple_blist_get_buddies(), _match_buddies_by_address, mbba);
/* If there is exactly one match, use it */
if(mbba->matched_buddies != NULL) {
============================================================
--- libpurple/protocols/qq/buddy_info.c 7bccadbbb5b47167651d3a8312d6b74fc7c148a4
+++ libpurple/protocols/qq/buddy_info.c 9472be6a87e1200e9bab7b2ce73f57d419cde083
@@ -638,7 +638,7 @@ static void update_buddy_info(PurpleConn
gchar *alias_utf8;
PurpleAccount *account = purple_connection_get_account(gc);
- qd = (qq_data *) gc->proto_data;
+ qd = (qq_data *)purple_connection_get_protocol_data(gc);
uid = strtol(segments[QQ_INFO_UID], NULL, 10);
who = uid_to_purple_name(uid);
@@ -657,15 +657,16 @@ static void update_buddy_info(PurpleConn
buddy = purple_find_buddy(gc->account, who);
}
- if (buddy == NULL || buddy->proto_data == NULL) {
+ /* if the buddy is null, the api will catch it and return null here */
+ bd = purple_buddy_get_protocol_data(buddy);
+
+ if (buddy == NULL || bd) {
g_free(who);
g_free(alias_utf8);
return;
}
/* update buddy list (including myself, if myself is the buddy) */
- bd = (qq_buddy_data *)buddy->proto_data;
-
bd->age = strtol(segments[QQ_INFO_AGE], NULL, 10);
bd->gender = strtol(segments[QQ_INFO_GENDER], NULL, 10);
bd->face = strtol(segments[QQ_INFO_FACE], NULL, 10);
@@ -794,8 +795,7 @@ void qq_request_get_buddies_level(Purple
for (it = buddies; it; it = it->next) {
buddy = it->data;
if (buddy == NULL) continue;
- if (buddy->proto_data == NULL) continue;
- bd = (qq_buddy_data *)buddy->proto_data;
+ if ((bd = purple_buddy_get_protocol_data(buddy)) == NULL) continue;
if (bd->uid == 0) continue; /* keep me as end of packet*/
if (bd->uid == qd->uid) continue;
bytes += qq_put32(buf + bytes, bd->uid);
============================================================
--- libpurple/protocols/qq/buddy_list.c 58fadd310aca203ce0a7cb377f7ccca861b148f8
+++ libpurple/protocols/qq/buddy_list.c eb5290f0f6d9260f8166388fa0827e89717b9e80
@@ -326,7 +326,7 @@ guint16 qq_process_get_buddies(guint8 *d
#endif
buddy = qq_buddy_find_or_new(gc, bd.uid);
- if (buddy == NULL || buddy->proto_data == NULL) {
+ if (buddy == NULL || purple_buddy_get_protocol_data(buddy) == NULL) {
g_free(bd.nickname);
continue;
}
@@ -334,7 +334,7 @@ guint16 qq_process_get_buddies(guint8 *d
bd.last_update = time(NULL);
qq_update_buddy_status(gc, bd.uid, bd.status, bd.comm_flag);
- g_memmove(buddy->proto_data, &bd, sizeof(qq_buddy_data));
+ g_memmove(purple_buddy_get_protocol_data(buddy), &bd, sizeof(qq_buddy_data));
/* nickname has been copy to buddy_data do not free
g_free(bd.nickname);
*/
@@ -641,9 +641,10 @@ void qq_update_buddyies_status(PurpleCon
for (it = buddies; it; it = it->next) {
buddy = it->data;
if (buddy == NULL) continue;
- if (buddy->proto_data == NULL) continue;
- bd = (qq_buddy_data *)buddy->proto_data;
+ bd = purple_buddy_get_protocol_data(buddy);
+ if (bd == NULL) continue;
+
if (bd->uid == 0) continue;
if (bd->uid == qd->uid) continue; /* my status is always online in my buddy list */
if (tm_limit < bd->last_update) continue;
@@ -663,17 +664,21 @@ void qq_buddy_data_free_all(PurpleConnec
GSList *buddies, *it;
gint count = 0;
- qd = (qq_data *) (gc->proto_data);
+ qd = (qq_data *)purple_connection_get_protocol_data(gc);
buddies = purple_find_buddies(purple_connection_get_account(gc), NULL);
for (it = buddies; it; it = it->next) {
+ qq_buddy_data *qbd = NULL;
+
buddy = it->data;
if (buddy == NULL) continue;
- if (buddy->proto_data == NULL) continue;
- qq_buddy_data_free(buddy->proto_data);
- buddy->proto_data = NULL;
+ qbd = purple_buddy_get_protocol_data(buddy);
+ if (qbd == NULL) continue;
+ qq_buddy_data_free(qbd);
+ purple_buddy_set_protocol_data(buddy, NULL);
+
count++;
}
============================================================
--- libpurple/protocols/qq/buddy_opt.c 1988bde1e67195bdfba7cbe0c9464b6ca9a6701a
+++ libpurple/protocols/qq/buddy_opt.c f457357a5bd0b57f051edafd81de48528c7f011d
@@ -101,6 +101,7 @@ qq_buddy_data *qq_buddy_data_find(Purple
{
gchar *who;
PurpleBuddy *buddy;
+ qq_buddy_data *bd;
g_return_val_if_fail(gc != NULL, NULL);
@@ -113,11 +114,12 @@ qq_buddy_data *qq_buddy_data_find(Purple
purple_debug_error("QQ", "Can not find purple buddy of %d\n", uid);
return NULL;
}
- if (buddy->proto_data == NULL) {
+
+ if ((bd = purple_buddy_get_protocol_data(buddy)) == NULL) {
purple_debug_error("QQ", "Can not find buddy data of %d\n", uid);
return NULL;
}
- return (qq_buddy_data *)buddy->proto_data;
+ return bd;
}
void qq_buddy_data_free(qq_buddy_data *bd)
@@ -150,7 +152,7 @@ PurpleBuddy *qq_buddy_new(PurpleConnecti
purple_debug_info("QQ", "Add new purple buddy: [%s]\n", who);
buddy = purple_buddy_new(gc->account, who, NULL); /* alias is NULL */
- buddy->proto_data = NULL;
+ purple_buddy_set_protocol_data(buddy, NULL);
g_free(who);
@@ -163,11 +165,14 @@ static void qq_buddy_free(PurpleBuddy *b
static void qq_buddy_free(PurpleBuddy *buddy)
{
+ qq_buddy_data *bd;
+
g_return_if_fail(buddy);
- if (buddy->proto_data) {
- qq_buddy_data_free(buddy->proto_data);
+
+ if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
+ qq_buddy_data_free(bd);
}
- buddy->proto_data = NULL;
+ purple_buddy_set_protocol_data(buddy, NULL);
purple_blist_remove_buddy(buddy);
}
@@ -187,6 +192,7 @@ PurpleBuddy *qq_buddy_find_or_new(Purple
PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid)
{
PurpleBuddy *buddy;
+ qq_buddy_data *bd;
g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
@@ -198,11 +204,12 @@ PurpleBuddy *qq_buddy_find_or_new(Purple
}
}
- if (buddy->proto_data != NULL) {
+ if (purple_buddy_get_protocol_data(buddy) != NULL) {
return buddy;
}
- buddy->proto_data = qq_buddy_data_new(uid);
+ bd = qq_buddy_data_new(uid);
+ purple_buddy_set_protocol_data(buddy, bd);
return buddy;
}
@@ -691,7 +698,7 @@ void qq_add_buddy(PurpleConnection *gc,
if (!qd->is_login)
return; /* IMPORTANT ! */
- uid = purple_name_to_uid(buddy->name);
+ uid = purple_name_to_uid(purple_buddy_get_name(buddy));
if (uid > 0) {
if (qd->client_version > 2005) {
request_add_buddy_no_auth_ex(gc, uid);
@@ -782,6 +789,7 @@ void qq_process_add_buddy_no_auth(Purple
gchar **segments;
gchar *dest_uid, *reply;
PurpleBuddy *buddy;
+ qq_buddy_data *bd;
g_return_if_fail(data != NULL && data_len != 0);
g_return_if_fail(uid != 0);
@@ -826,10 +834,10 @@ void qq_process_add_buddy_no_auth(Purple
if (buddy == NULL) {
buddy = qq_buddy_new(gc, uid);
}
- if (buddy != NULL && buddy->proto_data != NULL) {
+ if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
/* Not authorized now, free buddy data */
- qq_buddy_data_free(buddy->proto_data);
- buddy->proto_data = NULL;
+ qq_buddy_data_free(bd);
+ purple_buddy_set_protocol_data(buddy, NULL);
}
add_buddy_authorize_input(gc, uid, NULL, 0);
@@ -905,6 +913,7 @@ void qq_remove_buddy(PurpleConnection *g
void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
{
qq_data *qd;
+ qq_buddy_data *bd;
guint32 uid;
g_return_if_fail(gc != NULL && gc->proto_data != NULL);
@@ -914,7 +923,7 @@ void qq_remove_buddy(PurpleConnection *g
if (!qd->is_login)
return;
- uid = purple_name_to_uid(buddy->name);
+ uid = purple_name_to_uid(purple_buddy_get_name(buddy));
if (uid > 0 && uid != qd->uid) {
if (qd->client_version > 2005) {
qq_request_auth_code(gc, QQ_AUTH_INFO_BUDDY, QQ_AUTH_INFO_REMOVE_BUDDY, uid);
@@ -924,11 +933,11 @@ void qq_remove_buddy(PurpleConnection *g
}
}
- if (buddy->proto_data) {
- qq_buddy_data_free(buddy->proto_data);
- buddy->proto_data = NULL;
+ if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
+ qq_buddy_data_free(bd);
+ purple_buddy_set_protocol_data(buddy, NULL);
} else {
- purple_debug_warning("QQ", "Empty buddy data of %s\n", buddy->name);
+ purple_debug_warning("QQ", "Empty buddy data of %s\n", purple_buddy_get_name(buddy));
}
/* Do not call purple_blist_remove_buddy,
@@ -1216,6 +1225,7 @@ static void server_buddy_rejected_me(Pur
gint bytes;
gchar **segments;
gchar *primary, *secondary;
+ qq_buddy_data *bd;
g_return_if_fail(from != NULL && to != NULL);
@@ -1255,10 +1265,10 @@ static void server_buddy_rejected_me(Pur
g_return_if_fail(uid != 0);
buddy = qq_buddy_find(gc, uid);
- if (buddy != NULL && buddy->proto_data != NULL) {
+ if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
/* Not authorized now, free buddy data */
- qq_buddy_data_free(buddy->proto_data);
- buddy->proto_data = NULL;
+ qq_buddy_data_free(bd);
+ purple_buddy_set_protocol_data(buddy, NULL);
}
}
============================================================
--- libpurple/protocols/qq/group_internal.c 8fa420294d11ae026edf1feb14fe5f74f8989cfe
+++ libpurple/protocols/qq/group_internal.c eb1ffdd2cc542b2305be17ae4405c8e45c89befe
@@ -102,16 +102,21 @@ void qq_room_update_chat_info(PurpleChat
void qq_room_update_chat_info(PurpleChat *chat, qq_room_data *rmd)
{
+ GHashTable *components;
+
if (rmd->title_utf8 != NULL && strlen(rmd->title_utf8) > 0) {
purple_blist_alias_chat(chat, rmd->title_utf8);
}
- g_hash_table_replace(chat->components,
+
+ components = purple_chat_get_components(chat);
+
+ g_hash_table_replace(components,
g_strdup(QQ_ROOM_KEY_INTERNAL_ID),
g_strdup_printf("%d", rmd->id));
- g_hash_table_replace(chat->components,
+ g_hash_table_replace(components,
g_strdup(QQ_ROOM_KEY_EXTERNAL_ID),
g_strdup_printf("%d", rmd->ext_id));
- g_hash_table_replace(chat->components,
+ g_hash_table_replace(components,
g_strdup(QQ_ROOM_KEY_TITLE_UTF8), g_strdup(rmd->title_utf8));
}
@@ -249,11 +254,13 @@ qq_buddy_data *qq_room_buddy_find_or_new
member->uid = member_uid;
buddy = purple_find_buddy(purple_connection_get_account(gc), uid_to_purple_name(member_uid));
if (buddy != NULL) {
- bd = (qq_buddy_data *) buddy->proto_data;
+ const gchar *alias = NULL;
+
+ bd = purple_buddy_get_protocol_data(buddy);
if (bd != NULL && bd->nickname != NULL)
member->nickname = g_strdup(bd->nickname);
- else if (buddy->alias != NULL)
- member->nickname = g_strdup(buddy->alias);
+ else if ((alias = purple_buddy_get_alias(buddy)) != NULL)
+ member->nickname = g_strdup(alias);
}
rmd->members = g_list_append(rmd->members, member);
}
@@ -382,16 +389,19 @@ void qq_room_data_initial(PurpleConnecti
}
count = 0;
- for (node = ((PurpleBlistNode *) purple_group)->child; node != NULL; node = node->next) {
+ for (node = purple_blist_node_get_first_child((PurpleBlistNode *)purple_group);
+ node != NULL;
+ node = purple_blist_node_get_sibling_next(node))
+ {
if ( !PURPLE_BLIST_NODE_IS_CHAT(node)) {
continue;
}
/* got one */
chat = (PurpleChat *) node;
- if (account != chat->account) /* not qq account*/
+ if (account != purple_chat_get_account(chat)) /* not qq account*/
continue;
- rmd = room_data_new_by_hashtable(gc, chat->components);
+ rmd = room_data_new_by_hashtable(gc, purple_chat_get_components(chat));
qd->groups = g_list_append(qd->groups, rmd);
count++;
}
============================================================
--- libpurple/protocols/qq/im.c 6196190fb773adb5849a1805a4eb30d2acc0a5e0
+++ libpurple/protocols/qq/im.c f170e7b3933b5383a8a2bb5428f3f0db88e8fd6c
@@ -246,7 +246,7 @@ static void process_im_text(PurpleConnec
/* create no-auth buddy */
b = qq_buddy_new(gc, im_header->uid_from);
}
- bd = (b == NULL) ? NULL : (qq_buddy_data *) b->proto_data;
+ bd = (b == NULL) ? NULL : purple_buddy_get_protocol_data(b);
if (bd != NULL) {
bd->client_tag = im_header->version_from;
}
@@ -359,7 +359,7 @@ static void process_extend_im_text(
/* create no-auth buddy */
b = qq_buddy_new(gc, im_header->uid_from);
}
- bd = (b == NULL) ? NULL : (qq_buddy_data *) b->proto_data;
+ bd = (b == NULL) ? NULL : purple_buddy_get_protocol_data(b);
if (bd != NULL) {
bd->client_tag = im_header->version_from;
}
============================================================
--- libpurple/protocols/qq/qq.c 42e76557c53a5f241c9518d2f4f3164b1209afa8
+++ libpurple/protocols/qq/qq.c d176f85a794b6e31ec9af284532f133f241e2b58
@@ -248,7 +248,7 @@ static gchar *qq_status_text(PurpleBuddy
qq_buddy_data *bd;
GString *status;
- bd = (qq_buddy_data *) b->proto_data;
+ bd = purple_buddy_get_protocol_data(b);
if (bd == NULL)
return NULL;
@@ -291,7 +291,7 @@ static void qq_tooltip_text(PurpleBuddy
g_return_if_fail(b != NULL);
- bd = (qq_buddy_data *) b->proto_data;
+ bd = purple_buddy_get_protocol_data(b);
if (bd == NULL)
return;
@@ -382,11 +382,12 @@ static const char *qq_list_emblem(Purple
qq_data *qd;
qq_buddy_data *buddy;
- if (!b || !(account = b->account) ||
- !(gc = purple_account_get_connection(account)) || !(qd = gc->proto_data))
+ if (!b || !(account = purple_buddy_get_account(b)) ||
+ !(gc = purple_account_get_connection(account)) ||
+ !(qd = purple_connection_get_protocol_data(gc)))
return NULL;
- buddy = (qq_buddy_data *)b->proto_data;
+ buddy = purple_buddy_get_protocol_data(b);
if (!buddy) {
return "not-authorized";
}
@@ -798,8 +799,9 @@ static void action_chat_quit(PurpleBlist
static void action_chat_quit(PurpleBlistNode * node)
{
PurpleChat *chat = (PurpleChat *)node;
- PurpleConnection *gc = purple_account_get_connection(chat->account);
- GHashTable *components = chat -> components;
+ PurpleAccount *account = purple_chat_get_account(chat);
+ PurpleConnection *gc = purple_account_get_connection(account);
+ GHashTable *components = purple_chat_get_components(chat);
gchar *num_str;
guint32 room_id;
@@ -817,8 +819,9 @@ static void action_chat_get_info(PurpleB
static void action_chat_get_info(PurpleBlistNode * node)
{
PurpleChat *chat = (PurpleChat *)node;
- PurpleConnection *gc = purple_account_get_connection(chat->account);
- GHashTable *components = chat -> components;
+ PurpleAccount *account = purple_chat_get_account(chat);
+ PurpleConnection *gc = purple_account_get_connection(account);
+ GHashTable *components = purple_chat_get_components(chat);
gchar *num_str;
guint32 room_id;
@@ -905,7 +908,7 @@ static void qq_add_buddy_from_menu_cb(Pu
g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
buddy = (PurpleBuddy *) node;
- gc = purple_account_get_connection(buddy->account);
+ gc = purple_account_get_connection(purple_buddy_get_account(buddy));
qq_add_buddy(gc, buddy, NULL);
}
@@ -918,7 +921,7 @@ static GList *qq_buddy_menu(PurpleBuddy
PurpleConnection *gc = purple_account_get_connection(buddy->account);
qq_data *qd = gc->proto_data;
*/
- qq_buddy_data *bd = (qq_buddy_data *)buddy->proto_data;
+ qq_buddy_data *bd = purple_buddy_get_protocol_data(buddy);
if (bd == NULL) {
act = purple_menu_action_new(_("Add Buddy"),
============================================================
--- libpurple/protocols/qq/send_file.c 6771387353dfd697189c9537b9533a304d2c8261
+++ libpurple/protocols/qq/send_file.c b7901d5aa26d24dddf08c9c9b539700b7b0967c4
@@ -804,7 +804,7 @@ void qq_process_recv_file_request(guint8
"Received a FACE ip detect from %d, so he/she must be online :)\n", sender_uid);
b = purple_find_buddy(gc->account, sender_name);
- bd = (b == NULL) ? NULL : (qq_buddy_data *) b->proto_data;
+ bd = (b == NULL) ? NULL : purple_buddy_get_protocol_data(b);
if (bd) {
if(0 != info->remote_real_ip) {
g_memmove(&(bd->ip), &info->remote_real_ip, sizeof(bd->ip));
More information about the Commits
mailing list