void yahoo_process_conference_logon(PurpleConnection *gc, struct yahoo_packet *pkt) { GSList *l; char *room = NULL; char *who = NULL; PurpleConversation *c; for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; switch (pair->key) { case 57: g_free(room); room = yahoo_string_decode(gc, pair->value, FALSE); break; case 53: who = pair->value; break; } } if (who && room) { c = yahoo_find_conference(gc, room); if (c) { /* Prevent duplicate users in the chat */ if( !purple_conv_chat_find_user(PURPLE_CONV_CHAT(c), who) ) yahoo_chat_add_user(PURPLE_CONV_CHAT(c), who, NULL); } g_free(room); } }
void yahoo_process_conference_logon(GaimConnection *gc, struct yahoo_packet *pkt) { GSList *l; char *room = NULL; char *who = NULL; GaimConversation *c; for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; switch (pair->key) { case 57: room = yahoo_string_decode(gc, pair->value, FALSE); break; case 53: who = pair->value; break; } } if (who && room) { c = yahoo_find_conference(gc, room); if (c) yahoo_chat_add_user(GAIM_CONV_CHAT(c), who, NULL); g_free(room); } }
static void ycht_process_chatjoin(YchtConn *ycht, YchtPkt *pkt) { char *room, *topic; PurpleConnection *gc = ycht->gc; PurpleChatConversation *c = NULL; gboolean new_room = FALSE; char **members; int i; room = g_list_nth_data(pkt->data, 0); topic = g_list_nth_data(pkt->data, 1); if (!g_list_nth_data(pkt->data, 4)) return; if (!room) return; members = g_strsplit(g_list_nth_data(pkt->data, 4), "\001", 0); for (i = 0; members[i]; i++) { char *tmp = strchr(members[i], '\002'); if (tmp) *tmp = '\0'; } if (g_list_length(pkt->data) > 5) new_room = TRUE; if (new_room && ycht->changing_rooms) { purple_serv_got_chat_left(gc, YAHOO_CHAT_ID); ycht->changing_rooms = FALSE; c = purple_serv_got_joined_chat(gc, YAHOO_CHAT_ID, room); } else { c = purple_conversations_find_chat(gc, YAHOO_CHAT_ID); } if (topic) purple_chat_conversation_set_topic(c, NULL, topic); for (i = 0; members[i]; i++) { if (new_room) { /*if (!strcmp(members[i], purple_connection_get_display_name(ycht->gc))) continue;*/ purple_chat_conversation_add_user(c, members[i], NULL, PURPLE_CHAT_USER_NONE, TRUE); } else { yahoo_chat_add_user(c, members[i], NULL); } } g_strfreev(members); }
void yahoo_process_conference_logon(PurpleConnection *gc, struct yahoo_packet *pkt) { GSList *l; char *room = NULL; char *who = NULL; PurpleChatConversation *c; for (l = pkt->hash; l; l = l->next) { struct yahoo_pair *pair = l->data; switch (pair->key) { case 57: g_free(room); room = yahoo_string_decode(gc, pair->value, FALSE); break; case 53: if (g_utf8_validate(pair->value, -1, NULL)) { who = pair->value; } else { purple_debug_warning("yahoo", "yahoo_process_conference_logon " "got non-UTF-8 string for key %d\n", pair->key); } break; } } if (who && room) { c = yahoo_find_conference(gc, room); if (c) { /* Prevent duplicate users in the chat */ if( !purple_chat_conversation_has_user(c, who) ) yahoo_chat_add_user(c, who, NULL); } g_free(room); } }