summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/irc/irc-protocol.c38
-rw-r--r--tests/unit/plugins/irc/test-irc-protocol.cpp100
2 files changed, 118 insertions, 20 deletions
diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c
index de21811b3..21ff5d8f0 100644
--- a/src/plugins/irc/irc-protocol.c
+++ b/src/plugins/irc/irc-protocol.c
@@ -3871,26 +3871,33 @@ IRC_PROTOCOL_CALLBACK(306)
* Callback for the whois commands with nick and message.
*
* Command looks like:
- * :server 319 flashy FlashCode :some text here
+ * 319 flashy FlashCode :some text here
*/
IRC_PROTOCOL_CALLBACK(whois_nick_msg)
{
- IRC_PROTOCOL_MIN_ARGS(5);
+ char *str_params;
+
+ IRC_PROTOCOL_MIN_PARAMS(3);
+
+ str_params = irc_protocol_string_params (params, 2, num_params - 1);
weechat_printf_date_tags (
irc_msgbuffer_get_target_buffer (
- server, argv[3], command, "whois", NULL),
+ server, params[1], command, "whois", NULL),
date,
irc_protocol_tags (command, "irc_numeric", NULL, NULL),
"%s%s[%s%s%s] %s%s",
weechat_prefix ("network"),
IRC_COLOR_CHAT_DELIMITERS,
- irc_nick_color_for_msg (server, 1, NULL, argv[3]),
- argv[3],
+ irc_nick_color_for_msg (server, 1, NULL, params[1]),
+ params[1],
IRC_COLOR_CHAT_DELIMITERS,
IRC_COLOR_RESET,
- (argv_eol[4][0] == ':') ? argv_eol[4] + 1 : argv_eol[4]);
+ str_params);
+
+ if (str_params)
+ free (str_params);
return WEECHAT_RC_OK;
}
@@ -3899,26 +3906,33 @@ IRC_PROTOCOL_CALLBACK(whois_nick_msg)
* Callback for the whowas commands with nick and message.
*
* Command looks like:
- * :server 369 flashy FlashCode :some text here
+ * 369 flashy FlashCode :some text here
*/
IRC_PROTOCOL_CALLBACK(whowas_nick_msg)
{
- IRC_PROTOCOL_MIN_ARGS(5);
+ char *str_params;
+
+ IRC_PROTOCOL_MIN_PARAMS(3);
+
+ str_params = irc_protocol_string_params (params, 2, num_params - 1);
weechat_printf_date_tags (
irc_msgbuffer_get_target_buffer (
- server, argv[3], command, "whowas", NULL),
+ server, params[1], command, "whowas", NULL),
date,
irc_protocol_tags (command, "irc_numeric", NULL, NULL),
"%s%s[%s%s%s] %s%s",
weechat_prefix ("network"),
IRC_COLOR_CHAT_DELIMITERS,
- irc_nick_color_for_msg (server, 1, NULL, argv[3]),
- argv[3],
+ irc_nick_color_for_msg (server, 1, NULL, params[1]),
+ params[1],
IRC_COLOR_CHAT_DELIMITERS,
IRC_COLOR_RESET,
- (argv_eol[4][0] == ':') ? argv_eol[4] + 1 : argv_eol[4]);
+ str_params);
+
+ if (str_params)
+ free (str_params);
return WEECHAT_RC_OK;
}
diff --git a/tests/unit/plugins/irc/test-irc-protocol.cpp b/tests/unit/plugins/irc/test-irc-protocol.cpp
index 86ebc42b6..793df9199 100644
--- a/tests/unit/plugins/irc/test-irc-protocol.cpp
+++ b/tests/unit/plugins/irc/test-irc-protocol.cpp
@@ -2184,13 +2184,97 @@ TEST(IrcProtocolWithServer, whois_nick_msg)
{
SRV_INIT;
- /* not enough arguments */
+ /* not enough parameters */
RECV(":server 223");
- CHECK_ERROR_ARGS("223", 2, 5);
+ CHECK_ERROR_PARAMS("223", 0, 3);
RECV(":server 223 alice");
- CHECK_ERROR_ARGS("223", 3, 5);
+ CHECK_ERROR_PARAMS("223", 1, 3);
RECV(":server 223 alice bob");
- CHECK_ERROR_ARGS("223", 4, 5);
+ CHECK_ERROR_PARAMS("223", 2, 3);
+ RECV(":server 264");
+ CHECK_ERROR_PARAMS("264", 0, 3);
+ RECV(":server 264 alice");
+ CHECK_ERROR_PARAMS("264", 1, 3);
+ RECV(":server 264 alice bob");
+ CHECK_ERROR_PARAMS("264", 2, 3);
+ RECV(":server 275");
+ CHECK_ERROR_PARAMS("275", 0, 3);
+ RECV(":server 275 alice");
+ CHECK_ERROR_PARAMS("275", 1, 3);
+ RECV(":server 275 alice bob");
+ CHECK_ERROR_PARAMS("275", 2, 3);
+ RECV(":server 276");
+ CHECK_ERROR_PARAMS("276", 0, 3);
+ RECV(":server 276 alice");
+ CHECK_ERROR_PARAMS("276", 1, 3);
+ RECV(":server 276 alice bob");
+ CHECK_ERROR_PARAMS("276", 2, 3);
+ RECV(":server 307");
+ CHECK_ERROR_PARAMS("307", 0, 3);
+ RECV(":server 307 alice");
+ CHECK_ERROR_PARAMS("307", 1, 3);
+ RECV(":server 307 alice bob");
+ CHECK_ERROR_PARAMS("307", 2, 3);
+ RECV(":server 310");
+ CHECK_ERROR_PARAMS("310", 0, 3);
+ RECV(":server 310 alice");
+ CHECK_ERROR_PARAMS("310", 1, 3);
+ RECV(":server 310 alice bob");
+ CHECK_ERROR_PARAMS("310", 2, 3);
+ RECV(":server 313");
+ CHECK_ERROR_PARAMS("313", 0, 3);
+ RECV(":server 313 alice");
+ CHECK_ERROR_PARAMS("313", 1, 3);
+ RECV(":server 313 alice bob");
+ CHECK_ERROR_PARAMS("313", 2, 3);
+ RECV(":server 318");
+ CHECK_ERROR_PARAMS("318", 0, 3);
+ RECV(":server 318 alice");
+ CHECK_ERROR_PARAMS("318", 1, 3);
+ RECV(":server 318 alice bob");
+ CHECK_ERROR_PARAMS("318", 2, 3);
+ RECV(":server 319");
+ CHECK_ERROR_PARAMS("319", 0, 3);
+ RECV(":server 319 alice");
+ CHECK_ERROR_PARAMS("319", 1, 3);
+ RECV(":server 319 alice bob");
+ CHECK_ERROR_PARAMS("319", 2, 3);
+ RECV(":server 320");
+ CHECK_ERROR_PARAMS("320", 0, 3);
+ RECV(":server 320 alice");
+ CHECK_ERROR_PARAMS("320", 1, 3);
+ RECV(":server 320 alice bob");
+ CHECK_ERROR_PARAMS("320", 2, 3);
+ RECV(":server 326");
+ CHECK_ERROR_PARAMS("326", 0, 3);
+ RECV(":server 326 alice");
+ CHECK_ERROR_PARAMS("326", 1, 3);
+ RECV(":server 326 alice bob");
+ CHECK_ERROR_PARAMS("326", 2, 3);
+ RECV(":server 335");
+ CHECK_ERROR_PARAMS("335", 0, 3);
+ RECV(":server 335 alice");
+ CHECK_ERROR_PARAMS("335", 1, 3);
+ RECV(":server 335 alice bob");
+ CHECK_ERROR_PARAMS("335", 2, 3);
+ RECV(":server 378");
+ CHECK_ERROR_PARAMS("378", 0, 3);
+ RECV(":server 378 alice");
+ CHECK_ERROR_PARAMS("378", 1, 3);
+ RECV(":server 378 alice bob");
+ CHECK_ERROR_PARAMS("378", 2, 3);
+ RECV(":server 379");
+ CHECK_ERROR_PARAMS("379", 0, 3);
+ RECV(":server 379 alice");
+ CHECK_ERROR_PARAMS("379", 1, 3);
+ RECV(":server 379 alice bob");
+ CHECK_ERROR_PARAMS("379", 2, 3);
+ RECV(":server 671");
+ CHECK_ERROR_PARAMS("671", 0, 3);
+ RECV(":server 671 alice");
+ CHECK_ERROR_PARAMS("671", 1, 3);
+ RECV(":server 671 alice bob");
+ CHECK_ERROR_PARAMS("671", 2, 3);
RECV(":server 223 alice bob UTF-8");
CHECK_SRV("-- [bob] UTF-8");
@@ -2238,13 +2322,13 @@ TEST(IrcProtocolWithServer, whowas_nick_msg)
{
SRV_INIT;
- /* not enough arguments */
+ /* not enough parameters */
RECV(":server 369");
- CHECK_ERROR_ARGS("369", 2, 5);
+ CHECK_ERROR_PARAMS("369", 0, 3);
RECV(":server 369 alice");
- CHECK_ERROR_ARGS("369", 3, 5);
+ CHECK_ERROR_PARAMS("369", 1, 3);
RECV(":server 369 alice bob");
- CHECK_ERROR_ARGS("369", 4, 5);
+ CHECK_ERROR_PARAMS("369", 2, 3);
RECV(":server 369 alice bob end");
CHECK_SRV("-- [bob] end");