Mercurial > pidgin
comparison libpurple/protocols/bonjour/bonjour.c @ 32672:3828a61c44da
A boring and large patch so I can merge heads.
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Fri, 23 Dec 2011 08:21:58 +0000 |
parents | 99ca503ea087 |
children |
comparison
equal
deleted
inserted
replaced
32671:0e69949b3e61 | 32672:3828a61c44da |
---|---|
49 | 49 |
50 const char * | 50 const char * |
51 bonjour_get_jid(PurpleAccount *account) | 51 bonjour_get_jid(PurpleAccount *account) |
52 { | 52 { |
53 PurpleConnection *conn = purple_account_get_connection(account); | 53 PurpleConnection *conn = purple_account_get_connection(account); |
54 BonjourData *bd = conn->proto_data; | 54 BonjourData *bd = purple_connection_get_protocol_data(conn); |
55 return bd->jid; | 55 return bd->jid; |
56 } | 56 } |
57 | 57 |
58 static void | 58 static void |
59 bonjour_removeallfromlocal(PurpleConnection *conn, PurpleGroup *bonjour_group) | 59 bonjour_removeallfromlocal(PurpleConnection *conn, PurpleGroup *bonjour_group) |
100 "http://d.pidgin.im/BonjourWindows for more information.")); | 100 "http://d.pidgin.im/BonjourWindows for more information.")); |
101 return; | 101 return; |
102 } | 102 } |
103 #endif /* _WIN32 */ | 103 #endif /* _WIN32 */ |
104 | 104 |
105 gc->flags |= PURPLE_CONNECTION_HTML; | 105 purple_connection_set_flags(gc, PURPLE_CONNECTION_HTML); |
106 gc->proto_data = bd = g_new0(BonjourData, 1); | 106 bd = g_new0(BonjourData, 1); |
107 purple_connection_set_protocol_data(gc, bd); | |
107 | 108 |
108 /* Start waiting for jabber connections (iChat style) */ | 109 /* Start waiting for jabber connections (iChat style) */ |
109 bd->jabber_data = g_new0(BonjourJabber, 1); | 110 bd->jabber_data = g_new0(BonjourJabber, 1); |
110 bd->jabber_data->socket = -1; | 111 bd->jabber_data->socket = -1; |
111 bd->jabber_data->socket6 = -1; | 112 bd->jabber_data->socket6 = -1; |
155 | 156 |
156 static void | 157 static void |
157 bonjour_close(PurpleConnection *connection) | 158 bonjour_close(PurpleConnection *connection) |
158 { | 159 { |
159 PurpleGroup *bonjour_group; | 160 PurpleGroup *bonjour_group; |
160 BonjourData *bd = connection->proto_data; | 161 BonjourData *bd = purple_connection_get_protocol_data(connection); |
161 | 162 |
162 bonjour_group = purple_find_group(BONJOUR_GROUP_NAME); | 163 bonjour_group = purple_find_group(BONJOUR_GROUP_NAME); |
163 | 164 |
164 /* Remove all the bonjour buddies */ | 165 /* Remove all the bonjour buddies */ |
165 bonjour_removeallfromlocal(connection, bonjour_group); | 166 bonjour_removeallfromlocal(connection, bonjour_group); |
190 } | 191 } |
191 | 192 |
192 if (bd != NULL) | 193 if (bd != NULL) |
193 g_free(bd->jid); | 194 g_free(bd->jid); |
194 g_free(bd); | 195 g_free(bd); |
195 connection->proto_data = NULL; | 196 purple_connection_set_protocol_data(connection, NULL); |
196 } | 197 } |
197 | 198 |
198 static const char * | 199 static const char * |
199 bonjour_list_icon(PurpleAccount *account, PurpleBuddy *buddy) | 200 bonjour_list_icon(PurpleAccount *account, PurpleBuddy *buddy) |
200 { | 201 { |
202 } | 203 } |
203 | 204 |
204 static int | 205 static int |
205 bonjour_send_im(PurpleConnection *connection, const char *to, const char *msg, PurpleMessageFlags flags) | 206 bonjour_send_im(PurpleConnection *connection, const char *to, const char *msg, PurpleMessageFlags flags) |
206 { | 207 { |
208 BonjourData *bd = purple_connection_get_protocol_data(connection); | |
209 | |
207 if(!to || !msg) | 210 if(!to || !msg) |
208 return 0; | 211 return 0; |
209 | 212 |
210 return bonjour_jabber_send_message(((BonjourData*)(connection->proto_data))->jabber_data, to, msg); | 213 return bonjour_jabber_send_message(bd->jabber_data, to, msg); |
211 } | 214 } |
212 | 215 |
213 static void | 216 static void |
214 bonjour_set_status(PurpleAccount *account, PurpleStatus *status) | 217 bonjour_set_status(PurpleAccount *account, PurpleStatus *status) |
215 { | 218 { |
218 PurplePresence *presence; | 221 PurplePresence *presence; |
219 const char *message, *bonjour_status; | 222 const char *message, *bonjour_status; |
220 gchar *stripped; | 223 gchar *stripped; |
221 | 224 |
222 gc = purple_account_get_connection(account); | 225 gc = purple_account_get_connection(account); |
223 bd = gc->proto_data; | 226 bd = purple_connection_get_protocol_data(gc); |
224 presence = purple_account_get_presence(account); | 227 presence = purple_account_get_presence(account); |
225 | 228 |
226 message = purple_status_get_attr_string(status, "message"); | 229 message = purple_status_get_attr_string(status, "message"); |
227 if (message == NULL) | 230 if (message == NULL) |
228 message = ""; | 231 message = ""; |
251 * Bonjour manages buddies for you, and adding someone locally by | 254 * Bonjour manages buddies for you, and adding someone locally by |
252 * hand is stupid. Perhaps we should change libpurple not to allow adding | 255 * hand is stupid. Perhaps we should change libpurple not to allow adding |
253 * if there is no add_buddy callback. | 256 * if there is no add_buddy callback. |
254 */ | 257 */ |
255 static void | 258 static void |
256 bonjour_fake_add_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group) { | 259 bonjour_fake_add_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group, const char *message) { |
257 purple_debug_error("bonjour", "Buddy '%s' manually added; removing. " | 260 purple_debug_error("bonjour", "Buddy '%s' manually added; removing. " |
258 "Bonjour buddies must be discovered and not manually added.\n", | 261 "Bonjour buddies must be discovered and not manually added.\n", |
259 purple_buddy_get_name(buddy)); | 262 purple_buddy_get_name(buddy)); |
260 | 263 |
261 /* I suppose we could alert the user here, but it seems unnecessary. */ | 264 /* I suppose we could alert the user here, but it seems unnecessary. */ |
304 } | 307 } |
305 | 308 |
306 static void | 309 static void |
307 bonjour_convo_closed(PurpleConnection *connection, const char *who) | 310 bonjour_convo_closed(PurpleConnection *connection, const char *who) |
308 { | 311 { |
309 PurpleBuddy *buddy = purple_find_buddy(connection->account, who); | 312 PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(connection), who); |
310 BonjourBuddy *bb; | 313 BonjourBuddy *bb; |
311 | 314 |
312 if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL) | 315 if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL) |
313 { | 316 { |
314 /* | 317 /* |
323 } | 326 } |
324 | 327 |
325 static | 328 static |
326 void bonjour_set_buddy_icon(PurpleConnection *conn, PurpleStoredImage *img) | 329 void bonjour_set_buddy_icon(PurpleConnection *conn, PurpleStoredImage *img) |
327 { | 330 { |
328 BonjourData *bd = conn->proto_data; | 331 BonjourData *bd = purple_connection_get_protocol_data(conn); |
329 bonjour_dns_sd_update_buddy_icon(bd->dns_sd_data); | 332 bonjour_dns_sd_update_buddy_icon(bd->dns_sd_data); |
330 } | 333 } |
331 | 334 |
332 | 335 |
333 static char * | 336 static char * |
434 } | 437 } |
435 | 438 |
436 static void | 439 static void |
437 bonjour_group_buddy(PurpleConnection *connection, const char *who, const char *old_group, const char *new_group) | 440 bonjour_group_buddy(PurpleConnection *connection, const char *who, const char *old_group, const char *new_group) |
438 { | 441 { |
439 PurpleBuddy *buddy = purple_find_buddy(connection->account, who); | 442 PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(connection), who); |
440 | 443 |
441 bonjour_do_group_change(buddy, new_group); | 444 bonjour_do_group_change(buddy, new_group); |
442 | 445 |
443 } | 446 } |
444 | 447 |
459 } | 462 } |
460 | 463 |
461 static gboolean | 464 static gboolean |
462 bonjour_can_receive_file(PurpleConnection *connection, const char *who) | 465 bonjour_can_receive_file(PurpleConnection *connection, const char *who) |
463 { | 466 { |
464 PurpleBuddy *buddy = purple_find_buddy(connection->account, who); | 467 PurpleBuddy *buddy = purple_find_buddy(purple_connection_get_account(connection), who); |
465 | 468 |
466 return (buddy != NULL && purple_buddy_get_protocol_data(buddy) != NULL); | 469 return (buddy != NULL && purple_buddy_get_protocol_data(buddy) != NULL); |
467 } | 470 } |
468 | 471 |
469 static gboolean | 472 static gboolean |
479 | 482 |
480 static PurplePlugin *my_protocol = NULL; | 483 static PurplePlugin *my_protocol = NULL; |
481 | 484 |
482 static PurplePluginProtocolInfo prpl_info = | 485 static PurplePluginProtocolInfo prpl_info = |
483 { | 486 { |
487 sizeof(PurplePluginProtocolInfo), /* struct_size */ | |
484 OPT_PROTO_NO_PASSWORD, | 488 OPT_PROTO_NO_PASSWORD, |
485 NULL, /* user_splits */ | 489 NULL, /* user_splits */ |
486 NULL, /* protocol_options */ | 490 NULL, /* protocol_options */ |
487 {"png,gif,jpeg", 0, 0, 96, 96, 65535, PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */ | 491 {"png,gif,jpeg", 0, 0, 96, 96, 65535, PURPLE_ICON_SCALE_DISPLAY}, /* icon_spec */ |
488 bonjour_list_icon, /* list_icon */ | 492 bonjour_list_icon, /* list_icon */ |
519 NULL, /* chat_whisper */ | 523 NULL, /* chat_whisper */ |
520 NULL, /* chat_send */ | 524 NULL, /* chat_send */ |
521 NULL, /* keepalive */ | 525 NULL, /* keepalive */ |
522 NULL, /* register_user */ | 526 NULL, /* register_user */ |
523 NULL, /* get_cb_info */ | 527 NULL, /* get_cb_info */ |
524 NULL, /* get_cb_away */ | |
525 NULL, /* alias_buddy */ | 528 NULL, /* alias_buddy */ |
526 bonjour_group_buddy, /* group_buddy */ | 529 bonjour_group_buddy, /* group_buddy */ |
527 bonjour_rename_group, /* rename_group */ | 530 bonjour_rename_group, /* rename_group */ |
528 NULL, /* buddy_free */ | 531 NULL, /* buddy_free */ |
529 bonjour_convo_closed, /* convo_closed */ | 532 bonjour_convo_closed, /* convo_closed */ |
544 NULL, /* send_raw */ | 547 NULL, /* send_raw */ |
545 NULL, /* roomlist_room_serialize */ | 548 NULL, /* roomlist_room_serialize */ |
546 NULL, /* unregister_user */ | 549 NULL, /* unregister_user */ |
547 NULL, /* send_attention */ | 550 NULL, /* send_attention */ |
548 NULL, /* get_attention_types */ | 551 NULL, /* get_attention_types */ |
549 sizeof(PurplePluginProtocolInfo), /* struct_size */ | |
550 NULL, /* get_account_text_table */ | 552 NULL, /* get_account_text_table */ |
551 NULL, /* initiate_media */ | 553 NULL, /* initiate_media */ |
552 NULL, /* get_media_caps */ | 554 NULL, /* get_media_caps */ |
553 NULL, /* get_moods */ | 555 NULL, /* get_moods */ |
554 NULL, /* set_public_alias */ | 556 NULL, /* set_public_alias */ |
555 NULL, /* get_public_alias */ | 557 NULL /* get_public_alias */ |
556 NULL, /* add_buddy_with_invite */ | |
557 NULL /* add_buddies_with_invite */ | |
558 }; | 558 }; |
559 | 559 |
560 static PurplePluginInfo info = | 560 static PurplePluginInfo info = |
561 { | 561 { |
562 PURPLE_PLUGIN_MAGIC, | 562 PURPLE_PLUGIN_MAGIC, |