| 192 SilcPurplePrvgrp prv; |
195 SilcPurplePrvgrp prv; |
| 193 |
196 |
| 194 for (l = sg->grps; l; l = l->next) |
197 for (l = sg->grps; l; l = l->next) |
| 195 if (((SilcPurplePrvgrp)l->data)->key == key) { |
198 if (((SilcPurplePrvgrp)l->data)->key == key) { |
| 196 prv = l->data; |
199 prv = l->data; |
| 197 chat = purple_conversations_find_chat_with_account( |
200 chat = purple_conversation_manager_find_chat(manager, |
| 198 prv->channel, sg->account); |
201 sg->account, |
| |
202 prv->channel); |
| 199 break; |
203 break; |
| 200 } |
204 } |
| 201 } |
205 } |
| 202 if (channel && !chat) |
206 if (channel && !chat) { |
| 203 chat = purple_conversations_find_chat_with_account( |
207 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 204 channel->channel_name, sg->account); |
208 channel->channel_name); |
| 205 if (channel && !chat) |
209 } |
| |
210 |
| |
211 if (channel && !chat) { |
| 206 goto out; |
212 goto out; |
| |
213 } |
| 207 |
214 |
| 208 img = purple_image_new_from_data(data, data_len); |
215 img = purple_image_new_from_data(data, data_len); |
| 209 if (!img) |
216 if (!img) |
| 210 goto out; |
217 goto out; |
| 211 img_id = purple_image_store_add_temporary(img); |
218 img_id = purple_image_store_add_temporary(img); |
| 266 SilcUInt32 message_len) |
273 SilcUInt32 message_len) |
| 267 { |
274 { |
| 268 PurpleConnection *gc = client->application; |
275 PurpleConnection *gc = client->application; |
| 269 SilcPurple sg = purple_connection_get_protocol_data(gc); |
276 SilcPurple sg = purple_connection_get_protocol_data(gc); |
| 270 PurpleConversation *chat = NULL; |
277 PurpleConversation *chat = NULL; |
| |
278 PurpleConversationManager *manager = NULL; |
| 271 char *msg, *tmp; |
279 char *msg, *tmp; |
| 272 |
280 |
| 273 if (!message) |
281 if (!message) |
| 274 return; |
282 return; |
| |
283 |
| |
284 manager = purple_conversation_manager_get_default(); |
| 275 |
285 |
| 276 if (key) { |
286 if (key) { |
| 277 GList *l; |
287 GList *l; |
| 278 SilcPurplePrvgrp prv; |
288 SilcPurplePrvgrp prv; |
| 279 |
289 |
| 280 for (l = sg->grps; l; l = l->next) |
290 for (l = sg->grps; l; l = l->next) |
| 281 if (((SilcPurplePrvgrp)l->data)->key == key) { |
291 if (((SilcPurplePrvgrp)l->data)->key == key) { |
| 282 prv = l->data; |
292 prv = l->data; |
| 283 chat = purple_conversations_find_chat_with_account( |
293 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 284 prv->channel, sg->account); |
294 prv->channel); |
| 285 break; |
295 break; |
| 286 } |
296 } |
| 287 } |
297 } |
| 288 if (!chat) |
298 if (!chat) { |
| 289 chat = purple_conversations_find_chat_with_account( |
299 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 290 channel->channel_name, sg->account); |
300 channel->channel_name); |
| 291 if (!chat) |
301 } |
| |
302 |
| |
303 if (!chat) { |
| 292 return; |
304 return; |
| |
305 } |
| 293 |
306 |
| 294 if (flags & SILC_MESSAGE_FLAG_SIGNED && |
307 if (flags & SILC_MESSAGE_FLAG_SIGNED && |
| 295 purple_account_get_bool(sg->account, "sign-verify", FALSE)) { |
308 purple_account_get_bool(sg->account, "sign-verify", FALSE)) { |
| 296 /* XXX */ |
309 /* XXX */ |
| 297 } |
310 } |
| 363 SilcUInt32 message_len) |
376 SilcUInt32 message_len) |
| 364 { |
377 { |
| 365 PurpleConnection *gc = client->application; |
378 PurpleConnection *gc = client->application; |
| 366 SilcPurple sg = purple_connection_get_protocol_data(gc); |
379 SilcPurple sg = purple_connection_get_protocol_data(gc); |
| 367 PurpleConversation *convo; |
380 PurpleConversation *convo; |
| |
381 PurpleConversationManager *manager = NULL; |
| 368 char *msg, *tmp; |
382 char *msg, *tmp; |
| 369 |
383 |
| 370 if (!message) |
384 if (!message) { |
| 371 return; |
385 return; |
| 372 |
386 } |
| |
387 |
| |
388 manager = purple_conversation_manager_get_default(); |
| 373 /* XXX - Should this be PURPLE_CONV_TYPE_IM? */ |
389 /* XXX - Should this be PURPLE_CONV_TYPE_IM? */ |
| 374 convo = purple_conversations_find_with_account( |
390 convo = purple_conversation_manager_find(manager, sg->account, |
| 375 sender->nickname, sg->account); |
391 sender->nickname); |
| 376 |
392 |
| 377 if (flags & SILC_MESSAGE_FLAG_SIGNED && |
393 if (flags & SILC_MESSAGE_FLAG_SIGNED && |
| 378 purple_account_get_bool(sg->account, "sign-verify", FALSE)) { |
394 purple_account_get_bool(sg->account, "sign-verify", FALSE)) { |
| 379 /* XXX */ |
395 /* XXX */ |
| 380 } |
396 } |
| 443 silc_notify(SilcClient client, SilcClientConnection conn, |
459 silc_notify(SilcClient client, SilcClientConnection conn, |
| 444 SilcNotifyType type, ...) |
460 SilcNotifyType type, ...) |
| 445 { |
461 { |
| 446 va_list va; |
462 va_list va; |
| 447 PurpleConnection *gc = client->application; |
463 PurpleConnection *gc = client->application; |
| |
464 PurpleConversationManager *manager; |
| 448 SilcPurple sg = purple_connection_get_protocol_data(gc); |
465 SilcPurple sg = purple_connection_get_protocol_data(gc); |
| 449 PurpleAccount *account = purple_connection_get_account(gc); |
466 PurpleAccount *account = purple_connection_get_account(gc); |
| 450 PurpleConversation *chat; |
467 PurpleConversation *chat; |
| 451 SilcClientEntry client_entry, client_entry2; |
468 SilcClientEntry client_entry, client_entry2; |
| 452 SilcChannelEntry channel; |
469 SilcChannelEntry channel; |
| 488 |
507 |
| 489 /* If we joined channel, do nothing */ |
508 /* If we joined channel, do nothing */ |
| 490 if (client_entry == conn->local_entry) |
509 if (client_entry == conn->local_entry) |
| 491 break; |
510 break; |
| 492 |
511 |
| 493 chat = purple_conversations_find_chat_with_account( |
512 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 494 channel->channel_name, sg->account); |
513 channel->channel_name); |
| 495 if (!chat) |
514 if (!chat) { |
| 496 break; |
515 break; |
| |
516 } |
| 497 |
517 |
| 498 /* Join user to channel */ |
518 /* Join user to channel */ |
| 499 g_snprintf(buf, sizeof(buf), "%s@%s", |
519 g_snprintf(buf, sizeof(buf), "%s@%s", |
| 500 client_entry->username, client_entry->hostname); |
520 client_entry->username, client_entry->hostname); |
| 501 purple_chat_conversation_add_user(PURPLE_CHAT_CONVERSATION(chat), |
521 purple_chat_conversation_add_user(PURPLE_CHAT_CONVERSATION(chat), |
| 505 |
525 |
| 506 case SILC_NOTIFY_TYPE_LEAVE: |
526 case SILC_NOTIFY_TYPE_LEAVE: |
| 507 client_entry = va_arg(va, SilcClientEntry); |
527 client_entry = va_arg(va, SilcClientEntry); |
| 508 channel = va_arg(va, SilcChannelEntry); |
528 channel = va_arg(va, SilcChannelEntry); |
| 509 |
529 |
| 510 chat = purple_conversations_find_chat_with_account( |
530 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 511 channel->channel_name, sg->account); |
531 channel->channel_name); |
| 512 if (!chat) |
532 if (!chat) { |
| 513 break; |
533 break; |
| |
534 } |
| 514 |
535 |
| 515 /* Remove user from channel */ |
536 /* Remove user from channel */ |
| 516 purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat), |
537 purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat), |
| 517 client_entry->nickname, NULL); |
538 client_entry->nickname, NULL); |
| 518 |
539 |
| 523 tmp = va_arg(va, char *); |
544 tmp = va_arg(va, char *); |
| 524 |
545 |
| 525 /* Remove from all channels */ |
546 /* Remove from all channels */ |
| 526 silc_hash_table_list(client_entry->channels, &htl); |
547 silc_hash_table_list(client_entry->channels, &htl); |
| 527 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
548 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
| 528 chat = purple_conversations_find_chat_with_account( |
549 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 529 chu->channel->channel_name, sg->account); |
550 chu->channel->channel_name); |
| 530 if (!chat) |
551 if (!chat) { |
| 531 continue; |
552 continue; |
| |
553 } |
| 532 purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat), |
554 purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat), |
| 533 client_entry->nickname, |
555 client_entry->nickname, |
| 534 tmp); |
556 tmp); |
| 535 } |
557 } |
| 536 silc_hash_table_list_reset(&htl); |
558 silc_hash_table_list_reset(&htl); |
| 543 idtype = va_arg(va, int); |
565 idtype = va_arg(va, int); |
| 544 entry = va_arg(va, void *); |
566 entry = va_arg(va, void *); |
| 545 tmp = va_arg(va, char *); |
567 tmp = va_arg(va, char *); |
| 546 channel = va_arg(va, SilcChannelEntry); |
568 channel = va_arg(va, SilcChannelEntry); |
| 547 |
569 |
| 548 chat = purple_conversations_find_chat_with_account( |
570 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 549 channel->channel_name, sg->account); |
571 channel->channel_name); |
| 550 if (!chat) |
572 if (!chat) { |
| 551 break; |
573 break; |
| 552 |
574 } |
| 553 if (!tmp) |
575 |
| |
576 if (!tmp) { |
| 554 break; |
577 break; |
| |
578 } |
| 555 |
579 |
| 556 esc = g_markup_escape_text(tmp, -1); |
580 esc = g_markup_escape_text(tmp, -1); |
| 557 tmp2 = purple_markup_linkify(esc); |
581 tmp2 = purple_markup_linkify(esc); |
| 558 g_free(esc); |
582 g_free(esc); |
| 559 |
583 |
| 602 break; |
626 break; |
| 603 |
627 |
| 604 /* Change nick on all channels */ |
628 /* Change nick on all channels */ |
| 605 silc_hash_table_list(client_entry->channels, &htl); |
629 silc_hash_table_list(client_entry->channels, &htl); |
| 606 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
630 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
| 607 chat = purple_conversations_find_chat_with_account( |
631 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 608 chu->channel->channel_name, sg->account); |
632 chu->channel->channel_name); |
| 609 if (!chat) |
633 if (!chat) { |
| 610 continue; |
634 continue; |
| 611 if (purple_chat_conversation_has_user(PURPLE_CHAT_CONVERSATION(chat), client_entry->nickname)) |
635 } |
| |
636 if (purple_chat_conversation_has_user(PURPLE_CHAT_CONVERSATION(chat), client_entry->nickname)) { |
| 612 purple_chat_conversation_rename_user(PURPLE_CHAT_CONVERSATION(chat), |
637 purple_chat_conversation_rename_user(PURPLE_CHAT_CONVERSATION(chat), |
| 613 tmp, name); |
638 tmp, name); |
| |
639 } |
| 614 } |
640 } |
| 615 silc_hash_table_list_reset(&htl); |
641 silc_hash_table_list_reset(&htl); |
| 616 |
642 |
| 617 break; |
643 break; |
| 618 |
644 |
| 625 (void)va_arg(va, char *); |
651 (void)va_arg(va, char *); |
| 626 (void)va_arg(va, SilcPublicKey); |
652 (void)va_arg(va, SilcPublicKey); |
| 627 (void)va_arg(va, SilcDList); |
653 (void)va_arg(va, SilcDList); |
| 628 channel = va_arg(va, SilcChannelEntry); |
654 channel = va_arg(va, SilcChannelEntry); |
| 629 |
655 |
| 630 chat = purple_conversations_find_chat_with_account( |
656 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 631 channel->channel_name, sg->account); |
657 channel->channel_name); |
| 632 if (!chat) |
658 if (!chat) { |
| 633 break; |
659 break; |
| 634 |
660 } |
| 635 if (idtype == SILC_ID_CLIENT) |
661 |
| |
662 if (idtype == SILC_ID_CLIENT) { |
| 636 name = ((SilcClientEntry)entry)->nickname; |
663 name = ((SilcClientEntry)entry)->nickname; |
| 637 else if (idtype == SILC_ID_SERVER) |
664 } else if (idtype == SILC_ID_SERVER) { |
| 638 name = ((SilcServerEntry)entry)->server_name; |
665 name = ((SilcServerEntry)entry)->server_name; |
| 639 else |
666 } else { |
| 640 name = ((SilcChannelEntry)entry)->channel_name; |
667 name = ((SilcChannelEntry)entry)->channel_name; |
| 641 if (!name) |
668 } |
| |
669 |
| |
670 if (!name) { |
| 642 break; |
671 break; |
| |
672 } |
| 643 |
673 |
| 644 if (mode) { |
674 if (mode) { |
| 645 silcpurple_get_chmode_string(mode, buf2, sizeof(buf2)); |
675 silcpurple_get_chmode_string(mode, buf2, sizeof(buf2)); |
| 646 g_snprintf(buf, sizeof(buf), |
676 g_snprintf(buf, sizeof(buf), |
| 647 _("<I>%s</I> set channel <I>%s</I> modes to: %s"), name, |
677 _("<I>%s</I> set channel <I>%s</I> modes to: %s"), name, |
| 661 entry = va_arg(va, void *); |
691 entry = va_arg(va, void *); |
| 662 mode = va_arg(va, SilcUInt32); |
692 mode = va_arg(va, SilcUInt32); |
| 663 client_entry2 = va_arg(va, SilcClientEntry); |
693 client_entry2 = va_arg(va, SilcClientEntry); |
| 664 channel = va_arg(va, SilcChannelEntry); |
694 channel = va_arg(va, SilcChannelEntry); |
| 665 |
695 |
| 666 chat = purple_conversations_find_chat_with_account( |
696 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 667 channel->channel_name, sg->account); |
697 channel->channel_name); |
| 668 if (!chat) |
698 if (!chat) { |
| 669 break; |
699 break; |
| 670 |
700 } |
| 671 if (idtype == SILC_ID_CLIENT) |
701 |
| |
702 if (idtype == SILC_ID_CLIENT) { |
| 672 name = ((SilcClientEntry)entry)->nickname; |
703 name = ((SilcClientEntry)entry)->nickname; |
| 673 else if (idtype == SILC_ID_SERVER) |
704 } else if (idtype == SILC_ID_SERVER) { |
| 674 name = ((SilcServerEntry)entry)->server_name; |
705 name = ((SilcServerEntry)entry)->server_name; |
| 675 else |
706 } else { |
| 676 name = ((SilcChannelEntry)entry)->channel_name; |
707 name = ((SilcChannelEntry)entry)->channel_name; |
| 677 if (!name) |
708 } |
| |
709 |
| |
710 if (!name) { |
| 678 break; |
711 break; |
| |
712 } |
| 679 |
713 |
| 680 if (mode) { |
714 if (mode) { |
| 681 silcpurple_get_chumode_string(mode, buf2, sizeof(buf2)); |
715 silcpurple_get_chumode_string(mode, buf2, sizeof(buf2)); |
| 682 g_snprintf(buf, sizeof(buf), |
716 g_snprintf(buf, sizeof(buf), |
| 683 _("<I>%s</I> set <I>%s's</I> modes to: %s"), name, |
717 _("<I>%s</I> set <I>%s's</I> modes to: %s"), name, |
| 707 client_entry = va_arg(va, SilcClientEntry); |
741 client_entry = va_arg(va, SilcClientEntry); |
| 708 tmp = va_arg(va, char *); |
742 tmp = va_arg(va, char *); |
| 709 client_entry2 = va_arg(va, SilcClientEntry); |
743 client_entry2 = va_arg(va, SilcClientEntry); |
| 710 channel = va_arg(va, SilcChannelEntry); |
744 channel = va_arg(va, SilcChannelEntry); |
| 711 |
745 |
| 712 chat = purple_conversations_find_chat_with_account( |
746 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 713 channel->channel_name, sg->account); |
747 channel->channel_name); |
| 714 if (!chat) |
748 if (!chat) { |
| 715 break; |
749 break; |
| |
750 } |
| 716 |
751 |
| 717 if (client_entry == conn->local_entry) { |
752 if (client_entry == conn->local_entry) { |
| 718 /* Remove us from channel */ |
753 /* Remove us from channel */ |
| 719 g_snprintf(buf, sizeof(buf), |
754 g_snprintf(buf, sizeof(buf), |
| 720 _("You have been kicked off <I>%s</I> by <I>%s</I> (%s)"), |
755 _("You have been kicked off <I>%s</I> by <I>%s</I> (%s)"), |
| 758 } |
793 } |
| 759 |
794 |
| 760 /* Remove us from all channels */ |
795 /* Remove us from all channels */ |
| 761 silc_hash_table_list(client_entry->channels, &htl); |
796 silc_hash_table_list(client_entry->channels, &htl); |
| 762 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
797 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
| 763 chat = purple_conversations_find_chat_with_account( |
798 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 764 chu->channel->channel_name, sg->account); |
799 chu->channel->channel_name); |
| 765 if (!chat) |
800 if (!chat) { |
| 766 continue; |
801 continue; |
| |
802 } |
| 767 purple_conversation_write_system_message(chat, buf, 0); |
803 purple_conversation_write_system_message(chat, buf, 0); |
| 768 purple_serv_got_chat_left(gc, purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(chat))); |
804 purple_serv_got_chat_left(gc, purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(chat))); |
| 769 } |
805 } |
| 770 silc_hash_table_list_reset(&htl); |
806 silc_hash_table_list_reset(&htl); |
| 771 |
807 |
| 788 } |
824 } |
| 789 |
825 |
| 790 /* Remove user from all channels */ |
826 /* Remove user from all channels */ |
| 791 silc_hash_table_list(client_entry->channels, &htl); |
827 silc_hash_table_list(client_entry->channels, &htl); |
| 792 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
828 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
| 793 chat = purple_conversations_find_chat_with_account( |
829 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 794 chu->channel->channel_name, sg->account); |
830 chu->channel->channel_name); |
| 795 if (!chat) |
831 if (!chat) { |
| 796 continue; |
832 continue; |
| |
833 } |
| 797 purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat), |
834 purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat), |
| 798 client_entry->nickname, tmp); |
835 client_entry->nickname, tmp); |
| 799 } |
836 } |
| 800 silc_hash_table_list_reset(&htl); |
837 silc_hash_table_list_reset(&htl); |
| 801 } |
838 } |
| 812 silc_dlist_start(list); |
849 silc_dlist_start(list); |
| 813 while ((client_entry = silc_dlist_get(list))) { |
850 while ((client_entry = silc_dlist_get(list))) { |
| 814 /* Remove from all channels */ |
851 /* Remove from all channels */ |
| 815 silc_hash_table_list(client_entry->channels, &htl); |
852 silc_hash_table_list(client_entry->channels, &htl); |
| 816 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
853 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
| 817 chat = purple_conversations_find_chat_with_account( |
854 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 818 chu->channel->channel_name, sg->account); |
855 chu->channel->channel_name); |
| 819 if (!chat) |
856 if (!chat) { |
| 820 continue; |
857 continue; |
| |
858 } |
| 821 purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat), |
859 purple_chat_conversation_remove_user(PURPLE_CHAT_CONVERSATION(chat), |
| 822 client_entry->nickname, |
860 client_entry->nickname, |
| 823 _("Server signoff")); |
861 _("Server signoff")); |
| 824 } |
862 } |
| 825 silc_hash_table_list_reset(&htl); |
863 silc_hash_table_list_reset(&htl); |
| 988 SilcStatus error, va_list ap) |
1026 SilcStatus error, va_list ap) |
| 989 { |
1027 { |
| 990 PurpleConnection *gc = client->application; |
1028 PurpleConnection *gc = client->application; |
| 991 SilcPurple sg = purple_connection_get_protocol_data(gc); |
1029 SilcPurple sg = purple_connection_get_protocol_data(gc); |
| 992 PurpleConversation *chat; |
1030 PurpleConversation *chat; |
| |
1031 PurpleConversationManager *manager; |
| |
1032 |
| |
1033 manager = purple_conversation_manager_get_default(); |
| 993 |
1034 |
| 994 switch (command) { |
1035 switch (command) { |
| 995 case SILC_COMMAND_JOIN: |
1036 case SILC_COMMAND_JOIN: |
| 996 { |
1037 { |
| 997 SilcChannelEntry channel; |
1038 SilcChannelEntry channel; |
| 1014 topic = va_arg(ap, char *); |
1055 topic = va_arg(ap, char *); |
| 1015 |
1056 |
| 1016 /* Add channel to Purple */ |
1057 /* Add channel to Purple */ |
| 1017 channel->context = SILC_32_TO_PTR(++sg->channel_ids); |
1058 channel->context = SILC_32_TO_PTR(++sg->channel_ids); |
| 1018 purple_serv_got_joined_chat(gc, sg->channel_ids, channel->channel_name); |
1059 purple_serv_got_joined_chat(gc, sg->channel_ids, channel->channel_name); |
| 1019 chat = purple_conversations_find_chat_with_account( |
1060 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 1020 channel->channel_name, sg->account); |
1061 channel->channel_name); |
| 1021 if (!chat) |
1062 if (!chat) { |
| 1022 return; |
1063 return; |
| |
1064 } |
| 1023 |
1065 |
| 1024 /* Add all users to channel */ |
1066 /* Add all users to channel */ |
| 1025 while (silc_hash_table_get(user_list, NULL, (void *)&chu)) { |
1067 while (silc_hash_table_get(user_list, NULL, (void *)&chu)) { |
| 1026 PurpleChatUserFlags f = PURPLE_CHAT_USER_NONE; |
1068 PurpleChatUserFlags f = PURPLE_CHAT_USER_NONE; |
| 1027 chu->context = SILC_32_TO_PTR(sg->channel_ids); |
1069 chu->context = SILC_32_TO_PTR(sg->channel_ids); |
| 1308 return; |
1350 return; |
| 1309 } |
1351 } |
| 1310 |
1352 |
| 1311 channel = va_arg(ap, SilcChannelEntry); |
1353 channel = va_arg(ap, SilcChannelEntry); |
| 1312 |
1354 |
| 1313 chat = purple_conversations_find_chat_with_account( |
1355 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 1314 channel->channel_name, sg->account); |
1356 channel->channel_name); |
| 1315 if (!chat) { |
1357 if (!chat) { |
| 1316 purple_debug_error("silc", "Got a topic for %s, which doesn't exist\n", |
1358 purple_debug_error("silc", "Got a topic for %s, which doesn't exist\n", |
| 1317 channel->channel_name); |
1359 channel->channel_name); |
| 1318 break; |
1360 break; |
| 1319 } |
1361 } |
| 1344 newnick = va_arg(ap, char *); |
1386 newnick = va_arg(ap, char *); |
| 1345 |
1387 |
| 1346 /* Change nick on all channels */ |
1388 /* Change nick on all channels */ |
| 1347 silc_hash_table_list(local_entry->channels, &htl); |
1389 silc_hash_table_list(local_entry->channels, &htl); |
| 1348 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
1390 while (silc_hash_table_get(&htl, NULL, (void *)&chu)) { |
| 1349 chat = purple_conversations_find_chat_with_account( |
1391 chat = purple_conversation_manager_find_chat(manager, sg->account, |
| 1350 chu->channel->channel_name, sg->account); |
1392 chu->channel->channel_name); |
| 1351 if (!chat) |
1393 if (!chat) { |
| 1352 continue; |
1394 continue; |
| |
1395 } |
| 1353 oldnick = purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(chat)); |
1396 oldnick = purple_chat_conversation_get_nick(PURPLE_CHAT_CONVERSATION(chat)); |
| 1354 if (!purple_strequal(oldnick, |
1397 if (!purple_strequal(oldnick, |
| 1355 purple_normalize(purple_conversation_get_account(chat), |
1398 purple_normalize(purple_conversation_get_account(chat), |
| 1356 newnick))) { |
1399 newnick))) |
| |
1400 { |
| 1357 |
1401 |
| 1358 purple_chat_conversation_rename_user(PURPLE_CHAT_CONVERSATION(chat), |
1402 purple_chat_conversation_rename_user(PURPLE_CHAT_CONVERSATION(chat), |
| 1359 oldnick, newnick); |
1403 oldnick, newnick); |
| 1360 purple_chat_conversation_set_nick(PURPLE_CHAT_CONVERSATION(chat), newnick); |
1404 purple_chat_conversation_set_nick(PURPLE_CHAT_CONVERSATION(chat), newnick); |
| 1361 } |
1405 } |