1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-07 02:03:13 +02:00

irc: use parsed command parameters in "whois" and "whowas" command callbacks

This commit is contained in:
Sébastien Helleu
2021-10-16 09:25:34 +02:00
parent f51f3dbe29
commit 3360cadd55
2 changed files with 118 additions and 20 deletions
+26 -12
View File
@@ -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;
}
+92 -8
View File
@@ -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");