From 137aaeb4997295128a66d1ced6ff71bf12919e57 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Sun, 26 May 2002 17:39:35 +0000 Subject: [PATCH] "/MSG *" works now properly with dcc chat queries. git-svn-id: http://svn.irssi.org/repos/irssi/trunk@2826 dbcabf3a-b0e7-0310-adc4-f8d773084564 --- src/fe-common/irc/dcc/fe-dcc-chat.c | 26 +++++++++++++++----------- src/irc/dcc/dcc-chat.c | 21 +++++++++++++-------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/fe-common/irc/dcc/fe-dcc-chat.c b/src/fe-common/irc/dcc/fe-dcc-chat.c index 74d0d70b..3095fcfd 100644 --- a/src/fe-common/irc/dcc/fe-dcc-chat.c +++ b/src/fe-common/irc/dcc/fe-dcc-chat.c @@ -226,7 +226,7 @@ static void sig_dcc_list_print(CHAT_DCC_REC *dcc) dcc->id, "CHAT"); } -static void cmd_msg(const char *data) +static void cmd_msg(const char *data, SERVER_REC *server, WI_ITEM_REC *item) { CHAT_DCC_REC *dcc; GHashTable *optlist; @@ -240,18 +240,22 @@ static void cmd_msg(const char *data) &optlist, &target, &text)) return; - if (*target == '=') { - /* handle only DCC messages */ + /* handle only DCC messages */ + if (strcmp(target, "*") == 0) + dcc = item_get_dcc(item); + else if (*target == '=') dcc = dcc_chat_find_id(target+1); - if (dcc == NULL || dcc->sendbuf == NULL) { - printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, - IRCTXT_DCC_CHAT_NOT_FOUND, target+1); - } else { - if (query_find(NULL, target) == NULL) - completion_last_message_add(target); + else + dcc = NULL; - signal_emit("message dcc own", 2, dcc, text); - } + if (dcc == NULL && *target == '=') { + printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, + IRCTXT_DCC_CHAT_NOT_FOUND, target+1); + } else if (dcc != NULL) { + if (query_find(NULL, target) == NULL) + completion_last_message_add(target); + + signal_emit("message dcc own", 2, dcc, text); } cmd_params_free(free_arg); diff --git a/src/irc/dcc/dcc-chat.c b/src/irc/dcc/dcc-chat.c index 93aaaf55..d7ae68df 100644 --- a/src/irc/dcc/dcc-chat.c +++ b/src/irc/dcc/dcc-chat.c @@ -173,7 +173,7 @@ CHAT_DCC_REC *item_get_dcc(WI_ITEM_REC *item) } /* Send text to DCC chat */ -static void cmd_msg(const char *data) +static void cmd_msg(const char *data, SERVER_REC *server, WI_ITEM_REC *item) { CHAT_DCC_REC *dcc; GHashTable *optlist; @@ -187,26 +187,31 @@ static void cmd_msg(const char *data) &optlist, &target, &text)) return; - if (*target == '=') { - /* handle only DCC messages */ + /* handle only DCC messages */ + if (strcmp(target, "*") == 0) + dcc = item_get_dcc(item); + else if (*target == '=') dcc = dcc_chat_find_id(target+1); - if (dcc != NULL && dcc->sendbuf != NULL) - dcc_chat_send(dcc, text); + else + dcc = NULL; + if (dcc != NULL && dcc->sendbuf != NULL) + dcc_chat_send(dcc, text); + + if (dcc != NULL || *target == '=') signal_stop(); - } cmd_params_free(free_arg); } -static void cmd_me(const char *data, SERVER_REC *server, QUERY_REC *item) +static void cmd_me(const char *data, SERVER_REC *server, WI_ITEM_REC *item) { CHAT_DCC_REC *dcc; char *str; g_return_if_fail(data != NULL); - dcc = item_get_dcc((WI_ITEM_REC *) item); + dcc = item_get_dcc(item); if (dcc == NULL) return; str = g_strconcat("ACTION ", data, NULL);