Mercurial > pidgin
diff src/protocols/silc/chat.c @ 9353:b8138f3959dc
[gaim-migrate @ 10161]
Stu Tomlinson's bug fixes for SILC from bug #975859
committer: Tailor Script <tailor@pidgin.im>
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Tue, 22 Jun 2004 21:12:31 +0000 |
parents | 3313eab5033d |
children | 43741d8f76f7 |
line wrap: on
line diff
--- a/src/protocols/silc/chat.c Tue Jun 22 21:04:33 2004 +0000 +++ b/src/protocols/silc/chat.c Tue Jun 22 21:12:31 2004 +0000 @@ -1003,6 +1003,9 @@ /* Set topic */ if (channel->topic) gaim_conv_chat_set_topic(GAIM_CONV_CHAT(convo), NULL, channel->topic); + + /* Set nick */ + gaim_conv_chat_set_nick(GAIM_CONV_CHAT(convo), conn->local_entry->nickname); } void silcgaim_chat_join(GaimConnection *gc, GHashTable *data) @@ -1130,7 +1133,7 @@ /* Call INVITE */ silc_client_command_call(client, conn, NULL, "INVITE", chu->channel->channel_name, - name); + name, NULL); } void silcgaim_chat_leave(GaimConnection *gc, int id) @@ -1213,21 +1216,31 @@ SilcChannelPrivateKey key = NULL; SilcUInt32 flags; int ret; + const char *msg2; gboolean found = FALSE; gboolean sign = gaim_prefs_get_bool("/plugins/prpl/silc/sign_chat"); if (!msg || !conn) return 0; - /* See if command */ - if (strlen(msg) > 1 && msg[0] == '/') { + flags = SILC_MESSAGE_FLAG_UTF8; + + msg2 = msg; + + if (!g_ascii_strncasecmp(msg2, "/me ", 4)) + { + msg2 += 4; + if (!msg2) + return 0; + flags |= SILC_MESSAGE_FLAG_ACTION; + } else if (strlen(msg) > 1 && msg[0] == '/') { if (!silc_client_command_call(client, conn, msg + 1)) gaim_notify_error(gc, ("Call Command"), _("Cannot call command"), - _("Unknown command")); + _("Unknown command")); return 0; } - flags = SILC_MESSAGE_FLAG_UTF8; + if (sign) flags |= SILC_MESSAGE_FLAG_SIGNED; @@ -1267,8 +1280,8 @@ /* Send channel message */ ret = silc_client_send_channel_message(client, conn, channel, key, - flags, (unsigned char *)msg, - strlen(msg), TRUE); + flags, (unsigned char *)msg2, + strlen(msg2), TRUE); if (ret) serv_got_chat_in(gc, id, gaim_connection_get_display_name(gc), 0, msg, time(NULL)); @@ -1285,7 +1298,7 @@ SilcChannelUser chu; gboolean found = FALSE; - if (!topic || !conn) + if (!conn) return; /* See if setting topic on private group. Set it