comparison libpurple/protocols/msn/slp.c @ 16390:4fc51a87ce42

Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
author Richard Laager <rlaager@wiktel.com>
date Wed, 25 Apr 2007 21:48:56 +0000
parents d4c79390d424
children 24bbd7e46bfe
comparison
equal deleted inserted replaced
16389:493ca924c199 16390:4fc51a87ce42
246 const char *euf_guid, const char *context) 246 const char *euf_guid, const char *context)
247 { 247 {
248 if (!strcmp(euf_guid, "A4268EEC-FEC5-49E5-95C3-F126696BDBF6")) 248 if (!strcmp(euf_guid, "A4268EEC-FEC5-49E5-95C3-F126696BDBF6"))
249 { 249 {
250 /* Emoticon or UserDisplay */ 250 /* Emoticon or UserDisplay */
251 char *content;
252 gsize len;
251 MsnSlpSession *slpsession; 253 MsnSlpSession *slpsession;
252 MsnSlpLink *slplink; 254 MsnSlpLink *slplink;
253 MsnSlpMessage *slpmsg; 255 MsnSlpMessage *slpmsg;
254 MsnObject *obj; 256 MsnObject *obj;
255 char *msnobj_data; 257 char *msnobj_data;
256 const char *file_name; 258 PurpleStoredImage *img;
257 char *content;
258 gsize len;
259 int type; 259 int type;
260 260
261 /* Send Ok */ 261 /* Send Ok */
262 content = g_strdup_printf("SessionID: %lu\r\n\r\n", 262 content = g_strdup_printf("SessionID: %lu\r\n\r\n",
263 slpcall->session_id); 263 slpcall->session_id);
279 purple_debug_error("msn", "Wrong object?\n"); 279 purple_debug_error("msn", "Wrong object?\n");
280 msn_object_destroy(obj); 280 msn_object_destroy(obj);
281 g_return_if_reached(); 281 g_return_if_reached();
282 } 282 }
283 283
284 file_name = msn_object_get_real_location(obj); 284 img = msn_object_get_image(obj);
285 285 if (img == NULL)
286 if (file_name == NULL)
287 { 286 {
288 purple_debug_error("msn", "Wrong object.\n"); 287 purple_debug_error("msn", "Wrong object.\n");
289 msn_object_destroy(obj); 288 msn_object_destroy(obj);
290 g_return_if_reached(); 289 g_return_if_reached();
291 } 290 }
312 slpmsg->slpsession = slpsession; 311 slpmsg->slpsession = slpsession;
313 slpmsg->flags = 0x20; 312 slpmsg->flags = 0x20;
314 #ifdef MSN_DEBUG_SLP 313 #ifdef MSN_DEBUG_SLP
315 slpmsg->info = "SLP DATA"; 314 slpmsg->info = "SLP DATA";
316 #endif 315 #endif
317 msn_slpmsg_open_file(slpmsg, file_name); 316 msn_slpmsg_set_image(slpmsg, img);
318 msn_slplink_queue_slpmsg(slplink, slpmsg); 317 msn_slplink_queue_slpmsg(slplink, slpmsg);
319 } 318 }
320 else if (!strcmp(euf_guid, "5D3E02AB-6190-11D3-BBBB-00C04F795683")) 319 else if (!strcmp(euf_guid, "5D3E02AB-6190-11D3-BBBB-00C04F795683"))
321 { 320 {
322 /* File Transfer */ 321 /* File Transfer */
1073 end_user_display, obj); 1072 end_user_display, obj);
1074 } 1073 }
1075 else 1074 else
1076 { 1075 {
1077 MsnObject *my_obj = NULL; 1076 MsnObject *my_obj = NULL;
1078 gchar *data = NULL; 1077 gconstpointer data = NULL;
1079 gsize len = 0; 1078 size_t len = 0;
1080 1079
1081 #ifdef MSN_DEBUG_UD 1080 #ifdef MSN_DEBUG_UD
1082 purple_debug_info("msn", "Requesting our own user display\n"); 1081 purple_debug_info("msn", "Requesting our own user display\n");
1083 #endif 1082 #endif
1084 1083
1085 my_obj = msn_user_get_object(session->user); 1084 my_obj = msn_user_get_object(session->user);
1086 1085
1087 if (my_obj != NULL) 1086 if (my_obj != NULL)
1088 { 1087 {
1089 const char *filename = msn_object_get_real_location(my_obj); 1088 PurpleStoredImage *img = msn_object_get_image(my_obj);
1090 1089 data = purple_imgstore_get_data(img);
1091 if (filename != NULL) 1090 len = purple_imgstore_get_size(img);
1092 g_file_get_contents(filename, &data, &len, NULL); 1091 }
1093 } 1092
1094 1093 purple_buddy_icons_set_for_user(account, user->passport, data, len, info);
1095 purple_buddy_icons_set_for_user(account, user->passport, (void *)data, len, info);
1096 g_free(data);
1097 1094
1098 /* Free one window slot */ 1095 /* Free one window slot */
1099 session->userlist->buddy_icon_window++; 1096 session->userlist->buddy_icon_window++;
1100 1097
1101 #ifdef MSN_DEBUG_UD 1098 #ifdef MSN_DEBUG_UD