diff options
-rw-r--r-- | src/plugins/irc/irc-protocol.c | 38 | ||||
-rw-r--r-- | tests/unit/plugins/irc/test-irc-protocol.cpp | 100 |
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"); |