| 1360 void *context) |
1360 void *context) |
| 1361 { |
1361 { |
| 1362 PurpleConnection *gc = client->application; |
1362 PurpleConnection *gc = client->application; |
| 1363 SilcPurple sg = purple_connection_get_protocol_data(gc); |
1363 SilcPurple sg = purple_connection_get_protocol_data(gc); |
| 1364 SilcPurpleIM im = context; |
1364 SilcPurpleIM im = context; |
| 1365 PurpleConversation *convo; |
1365 PurpleIMConversation *convo; |
| 1366 char tmp[256]; |
1366 char tmp[256]; |
| 1367 SilcClientEntry client_entry; |
1367 SilcClientEntry client_entry; |
| 1368 SilcDList list; |
1368 SilcDList list; |
| 1369 gboolean free_list = FALSE; |
1369 gboolean free_list = FALSE; |
| 1370 |
1370 |
| 1403 silc_client_send_private_message(client, conn, |
1403 silc_client_send_private_message(client, conn, |
| 1404 client_entry, im->flags, sg->sha1hash, |
1404 client_entry, im->flags, sg->sha1hash, |
| 1405 buf->data, |
1405 buf->data, |
| 1406 silc_buffer_len(buf)); |
1406 silc_buffer_len(buf)); |
| 1407 silc_mime_partial_free(list); |
1407 silc_mime_partial_free(list); |
| 1408 purple_im_conversation_write_message(PURPLE_CONV_IM(convo), conn->local_entry->nickname, |
1408 purple_conversation_write_message(PURPLE_CONVERSATION(convo), conn->local_entry->nickname, |
| 1409 im->message, 0, time(NULL)); |
1409 im->message, 0, time(NULL)); |
| 1410 goto out; |
1410 goto out; |
| 1411 } |
1411 } |
| 1412 } |
1412 } |
| 1413 |
1413 |
| 1414 /* Send the message */ |
1414 /* Send the message */ |
| 1415 silc_client_send_private_message(client, conn, client_entry, im->flags, |
1415 silc_client_send_private_message(client, conn, client_entry, im->flags, |
| 1416 sg->sha1hash, (unsigned char *)im->message, im->message_len); |
1416 sg->sha1hash, (unsigned char *)im->message, im->message_len); |
| 1417 purple_im_conversation_write_message(PURPLE_CONV_IM(convo), conn->local_entry->nickname, |
1417 purple_conversation_write_message(PURPLE_CONVERSATION(convo), conn->local_entry->nickname, |
| 1418 im->message, 0, time(NULL)); |
1418 im->message, 0, time(NULL)); |
| 1419 goto out; |
1419 goto out; |
| 1420 |
1420 |
| 1421 err: |
1421 err: |
| 1422 g_snprintf(tmp, sizeof(tmp), |
1422 g_snprintf(tmp, sizeof(tmp), |
| 1423 _("User <I>%s</I> is not present in the network"), im->nick); |
1423 _("User <I>%s</I> is not present in the network"), im->nick); |
| 1424 purple_conversation_write(convo, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL)); |
1424 purple_conversation_write(PURPLE_CONVERSATION(convo), NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL)); |
| 1425 |
1425 |
| 1426 out: |
1426 out: |
| 1427 if (free_list) { |
1427 if (free_list) { |
| 1428 silc_client_list_free(client, conn, clients); |
1428 silc_client_list_free(client, conn, clients); |
| 1429 } |
1429 } |
| 1546 |
1546 |
| 1547 static PurpleCmdRet silcpurple_cmd_chat_part(PurpleConversation *conv, |
1547 static PurpleCmdRet silcpurple_cmd_chat_part(PurpleConversation *conv, |
| 1548 const char *cmd, char **args, char **error, void *data) |
1548 const char *cmd, char **args, char **error, void *data) |
| 1549 { |
1549 { |
| 1550 PurpleConnection *gc; |
1550 PurpleConnection *gc; |
| 1551 PurpleConversation *convo = conv; |
1551 PurpleChatConversation *chat = PURPLE_CHAT_CONVERSATION(conv); |
| 1552 int id = 0; |
1552 int id = 0; |
| 1553 |
1553 |
| 1554 gc = purple_conversation_get_connection(conv); |
1554 gc = purple_conversation_get_connection(conv); |
| 1555 |
1555 |
| 1556 if (gc == NULL) |
1556 if (gc == NULL) |
| 1557 return PURPLE_CMD_RET_FAILED; |
1557 return PURPLE_CMD_RET_FAILED; |
| 1558 |
1558 |
| 1559 if(args && args[0]) |
1559 if(args && args[0]) |
| 1560 convo = purple_conversations_find_chat_with_account(args[0], |
1560 chat = purple_conversations_find_chat_with_account(args[0], |
| 1561 purple_connection_get_account(gc)); |
1561 purple_connection_get_account(gc)); |
| 1562 |
1562 |
| 1563 if (convo != NULL) |
1563 if (chat != NULL) |
| 1564 id = purple_chat_conversation_get_id(PURPLE_CONV_CHAT(convo)); |
1564 id = purple_chat_conversation_get_id(chat); |
| 1565 |
1565 |
| 1566 if (id == 0) |
1566 if (id == 0) |
| 1567 return PURPLE_CMD_RET_FAILED; |
1567 return PURPLE_CMD_RET_FAILED; |
| 1568 |
1568 |
| 1569 silcpurple_chat_leave(gc, id); |
1569 silcpurple_chat_leave(gc, id); |
| 1579 int id = 0; |
1579 int id = 0; |
| 1580 char *buf, *tmp, *tmp2; |
1580 char *buf, *tmp, *tmp2; |
| 1581 const char *topic; |
1581 const char *topic; |
| 1582 |
1582 |
| 1583 gc = purple_conversation_get_connection(conv); |
1583 gc = purple_conversation_get_connection(conv); |
| 1584 id = purple_chat_conversation_get_id(PURPLE_CONV_CHAT(conv)); |
1584 id = purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(conv)); |
| 1585 |
1585 |
| 1586 if (gc == NULL || id == 0) |
1586 if (gc == NULL || id == 0) |
| 1587 return PURPLE_CMD_RET_FAILED; |
1587 return PURPLE_CMD_RET_FAILED; |
| 1588 |
1588 |
| 1589 if (!args || !args[0]) { |
1589 if (!args || !args[0]) { |
| 1590 topic = purple_chat_conversation_get_topic (PURPLE_CONV_CHAT(conv)); |
1590 topic = purple_chat_conversation_get_topic(PURPLE_CHAT_CONVERSATION(conv)); |
| 1591 if (topic) { |
1591 if (topic) { |
| 1592 tmp = g_markup_escape_text(topic, -1); |
1592 tmp = g_markup_escape_text(topic, -1); |
| 1593 tmp2 = purple_markup_linkify(tmp); |
1593 tmp2 = purple_markup_linkify(tmp); |
| 1594 buf = g_strdup_printf(_("current topic is: %s"), tmp2); |
1594 buf = g_strdup_printf(_("current topic is: %s"), tmp2); |
| 1595 g_free(tmp); |
1595 g_free(tmp); |
| 1596 g_free(tmp2); |
1596 g_free(tmp2); |
| 1597 } else |
1597 } else |
| 1598 buf = g_strdup(_("No topic is set")); |
1598 buf = g_strdup(_("No topic is set")); |
| 1599 purple_chat_conversation_write_message(PURPLE_CONV_CHAT(conv), purple_account_get_username(purple_connection_get_account(gc)), buf, |
1599 purple_conversation_write_message(conv, purple_account_get_username(purple_connection_get_account(gc)), buf, |
| 1600 PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NO_LOG, time(NULL)); |
1600 PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NO_LOG, time(NULL)); |
| 1601 g_free(buf); |
1601 g_free(buf); |
| 1602 |
1602 |
| 1603 } |
1603 } |
| 1604 |
1604 |
| 1677 |
1677 |
| 1678 static PurpleCmdRet silcpurple_cmd_query(PurpleConversation *conv, |
1678 static PurpleCmdRet silcpurple_cmd_query(PurpleConversation *conv, |
| 1679 const char *cmd, char **args, char **error, void *data) |
1679 const char *cmd, char **args, char **error, void *data) |
| 1680 { |
1680 { |
| 1681 int ret = 1; |
1681 int ret = 1; |
| 1682 PurpleConversation *convo; |
1682 PurpleIMConversation *im; |
| 1683 PurpleConnection *gc; |
1683 PurpleConnection *gc; |
| 1684 PurpleAccount *account; |
1684 PurpleAccount *account; |
| 1685 |
1685 |
| 1686 if (!args || !args[0]) { |
1686 if (!args || !args[0]) { |
| 1687 *error = g_strdup(_("You must specify a nick")); |
1687 *error = g_strdup(_("You must specify a nick")); |
| 1693 if (gc == NULL) |
1693 if (gc == NULL) |
| 1694 return PURPLE_CMD_RET_FAILED; |
1694 return PURPLE_CMD_RET_FAILED; |
| 1695 |
1695 |
| 1696 account = purple_connection_get_account(gc); |
1696 account = purple_connection_get_account(gc); |
| 1697 |
1697 |
| 1698 convo = purple_im_conversation_new(account, args[0]); |
1698 im = purple_im_conversation_new(account, args[0]); |
| 1699 |
1699 |
| 1700 if (args[1]) { |
1700 if (args[1]) { |
| 1701 ret = silcpurple_send_im(gc, args[0], args[1], PURPLE_MESSAGE_SEND); |
1701 ret = silcpurple_send_im(gc, args[0], args[1], PURPLE_MESSAGE_SEND); |
| 1702 purple_im_conversation_write_message(PURPLE_CONV_IM(convo), purple_connection_get_display_name(gc), |
1702 purple_conversation_write_message(PURPLE_CONVERSATION(im), purple_connection_get_display_name(gc), |
| 1703 args[1], PURPLE_MESSAGE_SEND, time(NULL)); |
1703 args[1], PURPLE_MESSAGE_SEND, time(NULL)); |
| 1704 } |
1704 } |
| 1705 |
1705 |
| 1706 if (ret) |
1706 if (ret) |
| 1707 return PURPLE_CMD_RET_OK; |
1707 return PURPLE_CMD_RET_OK; |
| 1793 silcpurple_get_chmode_string(channel->mode, tmp, sizeof(tmp)); |
1793 silcpurple_get_chmode_string(channel->mode, tmp, sizeof(tmp)); |
| 1794 msg = g_strdup_printf(_("channel modes for %s: %s"), chname, tmp); |
1794 msg = g_strdup_printf(_("channel modes for %s: %s"), chname, tmp); |
| 1795 } else { |
1795 } else { |
| 1796 msg = g_strdup_printf(_("no channel modes are set on %s"), chname); |
1796 msg = g_strdup_printf(_("no channel modes are set on %s"), chname); |
| 1797 } |
1797 } |
| 1798 purple_chat_conversation_write_message(PURPLE_CONV_CHAT(conv), "", |
1798 purple_conversation_write_message(conv, "", |
| 1799 msg, PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NO_LOG, time(NULL)); |
1799 msg, PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NO_LOG, time(NULL)); |
| 1800 g_free(msg); |
1800 g_free(msg); |
| 1801 return PURPLE_CMD_RET_OK; |
1801 return PURPLE_CMD_RET_OK; |
| 1802 } |
1802 } |
| 1803 |
1803 |