| 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 { |