libpurple/protocols/irc/msgs.c

branch
soc.2013.gobjectification
changeset 34676
b70177e7a8b7
parent 34671
ca9b45be7a63
child 34678
40a30f74a7b8
equal deleted inserted replaced
34675:313dd8fa6b2f 34676:b70177e7a8b7
477 PurpleChatUser *cb; 477 PurpleChatUser *cb;
478 478
479 char *cur, *userhost, *realname; 479 char *cur, *userhost, *realname;
480 480
481 PurpleChatUserFlags flags; 481 PurpleChatUserFlags flags;
482 GList *keys = NULL, *values = NULL;
483 482
484 if (!args || !args[0] || !args[1] || !args[2] || !args[3] 483 if (!args || !args[0] || !args[1] || !args[2] || !args[3]
485 || !args[4] || !args[5] || !args[6] || !args[7]) { 484 || !args[4] || !args[5] || !args[6] || !args[7]) {
486 purple_debug(PURPLE_DEBUG_ERROR, "irc", 485 purple_debug(PURPLE_DEBUG_ERROR, "irc",
487 "Got a WHO response with not enough arguments\n"); 486 "Got a WHO response with not enough arguments\n");
510 break; 509 break;
511 } 510 }
512 } 511 }
513 realname = g_strdup(cur); 512 realname = g_strdup(cur);
514 513
515 keys = g_list_prepend(keys, "userhost"); 514 g_object_set_data_full(G_OBJECT(cb), "userhost", userhost, (GDestroyNotify)g_free);
516 values = g_list_prepend(values, userhost); 515 g_object_set_data_full(G_OBJECT(cb), "realname", realname, (GDestroyNotify)g_free);
517
518 keys = g_list_prepend(keys, "realname");
519 values = g_list_prepend(values, realname);
520
521 purple_chat_user_set_attributes(cb, chat, keys, values);
522
523 g_list_free(keys);
524 g_list_free(values);
525
526 g_free(userhost);
527 g_free(realname);
528 516
529 flags = purple_chat_user_get_flags(cb); 517 flags = purple_chat_user_get_flags(cb);
530 518
531 /* FIXME: I'm not sure this is really a good idea, now 519 /* FIXME: I'm not sure this is really a good idea, now
532 * that we no longer do periodic WHO. It seems to me 520 * that we no longer do periodic WHO. It seems to me
1017 purple_chat_conversation_add_user(chat, nick, userhost, PURPLE_CHAT_USER_NONE, TRUE); 1005 purple_chat_conversation_add_user(chat, nick, userhost, PURPLE_CHAT_USER_NONE, TRUE);
1018 1006
1019 cb = purple_chat_conversation_find_user(chat, nick); 1007 cb = purple_chat_conversation_find_user(chat, nick);
1020 1008
1021 if (cb) { 1009 if (cb) {
1022 purple_chat_user_set_attribute(cb, chat, "userhost", userhost); 1010 g_object_set_data_full(G_OBJECT(cb), "userhost", userhost, (GDestroyNotify)g_free);
1023 } 1011 }
1024 1012
1025 if ((ib = g_hash_table_lookup(irc->buddies, nick)) != NULL) { 1013 if ((ib = g_hash_table_lookup(irc->buddies, nick)) != NULL) {
1026 ib->new_online_status = TRUE; 1014 ib->new_online_status = TRUE;
1027 irc_buddy_status(nick, ib, irc); 1015 irc_buddy_status(nick, ib, irc);
1028 } 1016 }
1029 1017
1030 g_free(userhost);
1031 g_free(nick); 1018 g_free(nick);
1032 } 1019 }
1033 1020
1034 void irc_msg_kick(struct irc_conn *irc, const char *name, const char *from, char **args) 1021 void irc_msg_kick(struct irc_conn *irc, const char *name, const char *from, char **args)
1035 { 1022 {

mercurial