--- a/libpurple/protocols/ircv3/purpleircv3parser.c Sat Oct 08 04:54:55 2022 -0500 +++ b/libpurple/protocols/ircv3/purpleircv3parser.c Sun Oct 09 00:41:50 2022 -0500 @@ -19,6 +19,7 @@ #include "purpleircv3parser.h" #include "purpleircv3core.h" +#include "purpleircv3messagehandlers.h" struct _PurpleIRCv3Parser { GObject parent; @@ -166,6 +167,18 @@ return result; } +static void +purple_ircv3_parser_add_handler(PurpleIRCv3Parser *parser, + const gchar *command, + PurpleIRCv3MessageHandler handler) +{ + g_return_if_fail(PURPLE_IRCV3_IS_PARSER(parser)); + g_return_if_fail(command != NULL); + g_return_if_fail(handler != NULL); + + g_hash_table_insert(parser->handlers, g_strdup(command), handler); +} + /****************************************************************************** * Handlers *****************************************************************************/ @@ -333,3 +346,14 @@ return result; } + +void +purple_ircv3_parser_add_default_handlers(PurpleIRCv3Parser *parser) { + g_return_if_fail(PURPLE_IRCV3_IS_PARSER(parser)); + + purple_ircv3_parser_set_fallback_handler(parser, + purple_ircv3_messager_handler_fallback); + + purple_ircv3_parser_add_handler(parser, "PING", + purple_ircv3_messager_handler_ping); +}