Mercurial > pidgin
diff libpurple/protocols/msn/slp.c @ 20409:7c0a2ef88018
propagate from branch 'im.pidgin.pidgin' (head cf7db89f6020ededb2d5c948c11c3fd0ef30bba5)
to branch 'im.pidgin.cpw.khc.msnp14' (head 6875bbea39f4f9d8251516b02893429d347e3d82)
author | Ka-Hing Cheung <khc@hxbc.us> |
---|---|
date | Wed, 02 May 2007 06:12:13 +0000 |
parents | 1122d47583a1 9634df5bbc6c |
children | 522ade544156 |
line wrap: on
line diff
--- a/libpurple/protocols/msn/slp.c Wed May 02 06:06:56 2007 +0000 +++ b/libpurple/protocols/msn/slp.c Wed May 02 06:12:13 2007 +0000 @@ -250,14 +250,14 @@ if (!strcmp(euf_guid, "A4268EEC-FEC5-49E5-95C3-F126696BDBF6")) { /* Emoticon or UserDisplay */ + char *content; + gsize len; MsnSlpSession *slpsession; MsnSlpLink *slplink; MsnSlpMessage *slpmsg; MsnObject *obj; char *msnobj_data; - const char *file_name; - char *content; - gsize len; + PurpleStoredImage *img; int type; /* Send Ok */ @@ -283,9 +283,8 @@ g_return_if_reached(); } - file_name = msn_object_get_real_location(obj); - - if (file_name == NULL) + img = msn_object_get_image(obj); + if (img == NULL) { purple_debug_error("msn", "Wrong object.\n"); msn_object_destroy(obj); @@ -316,7 +315,7 @@ #ifdef MSN_DEBUG_SLP slpmsg->info = "SLP DATA"; #endif - msn_slpmsg_open_file(slpmsg, file_name); + msn_slpmsg_set_image(slpmsg, img); msn_slplink_queue_slpmsg(slplink, slpmsg); } else if (!strcmp(euf_guid, "5D3E02AB-6190-11D3-BBBB-00C04F795683")) @@ -447,7 +446,7 @@ char *ip_port; int port; - /* ip_addr = purple_prefs_get_string("/core/ft/public_ip"); */ + /* ip_addr = purple_prefs_get_string("/purple/ft/public_ip"); */ ip_port = "5190"; listening = "true"; nonce = rand_guid(); @@ -871,7 +870,7 @@ if (buddy == NULL) return FALSE; - old = purple_blist_node_get_string((PurpleBlistNode *)buddy, "icon_checksum"); + old = purple_buddy_icons_get_checksum_for_user(buddy); new = msn_object_get_sha1(obj); if (new == NULL) @@ -879,7 +878,7 @@ /* If the old and new checksums are the same, and the file actually exists, * then return TRUE */ - if (old != NULL && !strcmp(old, new) && (purple_buddy_icons_find(account, purple_buddy_get_name(buddy)) != NULL)) + if (old != NULL && !strcmp(old, new)) return TRUE; return FALSE; @@ -957,22 +956,7 @@ if (obj == NULL) { - /* It seems the user has not set a msnobject */ - GSList *sl, *list; - - list = purple_find_buddies(account, user->passport); - - for (sl = list; sl != NULL; sl = sl->next) - { - PurpleBuddy *buddy = (PurpleBuddy *)sl->data; - if (buddy->icon) - purple_blist_node_remove_setting((PurpleBlistNode*)buddy, "icon_checksum"); - } - g_slist_free(list); - - /* TODO: I think we need better buddy icon core functions. */ - purple_buddy_icons_set_for_user(account, user->passport, NULL, 0); - + /* TODO purple_buddy_icons_set_for_user(account, user->passport, NULL, 0, NULL); */ return; } @@ -1002,7 +986,6 @@ MsnUserList *userlist; const char *info; PurpleAccount *account; - GSList *sl, *list; g_return_if_fail(slpcall != NULL); @@ -1014,18 +997,8 @@ userlist = slpcall->slplink->session->userlist; account = slpcall->slplink->session->account; - /* TODO: I think we need better buddy icon core functions. */ purple_buddy_icons_set_for_user(account, slpcall->slplink->remote_user, - (void *)data, size); - - list = purple_find_buddies(account, slpcall->slplink->remote_user); - - for (sl = list; sl != NULL; sl = sl->next) - { - PurpleBuddy *buddy = (PurpleBuddy *)sl->data; - purple_blist_node_set_string((PurpleBlistNode*)buddy, "icon_checksum", info); - } - g_slist_free(list); + g_memdup(data, size), size, info); #if 0 /* Free one window slot */ @@ -1102,9 +1075,8 @@ else { MsnObject *my_obj = NULL; - gchar *data = NULL; - gsize len = 0; - GSList *sl, *list; + gconstpointer data = NULL; + size_t len = 0; #ifdef MSN_DEBUG_UD purple_debug_info("msn", "Requesting our own user display\n"); @@ -1114,24 +1086,12 @@ if (my_obj != NULL) { - const char *filename = msn_object_get_real_location(my_obj); - - if (filename != NULL) - g_file_get_contents(filename, &data, &len, NULL); + PurpleStoredImage *img = msn_object_get_image(my_obj); + data = purple_imgstore_get_data(img); + len = purple_imgstore_get_size(img); } - /* TODO: I think we need better buddy icon core functions. */ - purple_buddy_icons_set_for_user(account, user->passport, (void *)data, len); - g_free(data); - - list = purple_find_buddies(account, user->passport); - - for (sl = list; sl != NULL; sl = sl->next) - { - PurpleBuddy *buddy = (PurpleBuddy *)sl->data; - purple_blist_node_set_string((PurpleBlistNode*)buddy, "icon_checksum", info); - } - g_slist_free(list); + purple_buddy_icons_set_for_user(account, user->passport, g_memdup(data, len), len, info); /* Free one window slot */ session->userlist->buddy_icon_window++;