From eda1cc1f90fc585de313b4f482eee02c653dd511 Mon Sep 17 00:00:00 2001 From: ailin-nemui Date: Thu, 15 Nov 2018 10:53:02 +0100 Subject: [PATCH] [wip] tieing up --- src/core/channels-setup.c | 5 +- src/core/chatnets.c | 8 +- src/core/commands.c | 2 +- src/core/core.c | 1 + src/core/expandos.c | 3 +- src/core/ignore.c | 4 +- src/core/log-away.c | 3 +- src/core/log.c | 5 +- src/core/nicklist.c | 2 +- src/core/nickmatch-cache.c | 4 +- src/core/servers-reconnect.c | 9 +- src/core/servers-setup.c | 5 +- src/core/session.c | 1 + src/core/settings.c | 5 +- src/core/signal-registry-macros.h | 29 ++++--- src/core/signal-registry.def | 13 +-- src/core/signal-registry.def.in | 10 +-- src/fe-common/core/signal-registry.def | 9 +- src/irc/core/channel-events.c | 114 +++++++++++++++++-------- src/irc/core/channel-rejoin.c | 40 +++++---- src/irc/core/channels-query.c | 97 +++++++++++++-------- src/irc/core/ctcp.c | 58 +++++++------ src/irc/core/irc-channels-setup.c | 1 + src/irc/core/irc-channels.c | 14 +-- src/irc/core/irc-chatnets.c | 101 +++++++++++----------- src/irc/core/irc-commands.c | 11 +-- src/irc/core/irc.c | 36 +++++--- src/irc/core/signal-registry.def | 52 ++++++++--- src/irc/core/signal-registry.def.in | 10 ++- 29 files changed, 401 insertions(+), 251 deletions(-) diff --git a/src/core/channels-setup.c b/src/core/channels-setup.c index 0d846407..f37fe3fb 100644 --- a/src/core/channels-setup.c +++ b/src/core/channels-setup.c @@ -20,6 +20,7 @@ #include "module.h" #include "signals.h" +#include "fe-common/core/signal-registry.h" #include "signal-registry.h" #include "lib-config/iconfig.h" #include "settings.h" @@ -215,7 +216,7 @@ void channels_setup_init(void) setupchannels = NULL; source_host_ok = FALSE; - signal_add__setup_reread(channels_read_config); + signal_add__setup_reread((signal_func_setup_reread_t) channels_read_config); signal_add__irssi_init_read_settings(channels_read_config); } @@ -224,6 +225,6 @@ void channels_setup_deinit(void) while (setupchannels != NULL) channel_setup_destroy(setupchannels->data); - signal_remove__setup_reread(channels_read_config); + signal_remove__setup_reread((signal_func_setup_reread_t) channels_read_config); signal_remove__irssi_init_read_settings(channels_read_config); } diff --git a/src/core/chatnets.c b/src/core/chatnets.c index de1378ac..62df0b56 100644 --- a/src/core/chatnets.c +++ b/src/core/chatnets.c @@ -22,6 +22,8 @@ #include "network.h" #include "signals.h" #include "signal-registry.h" +#include "fe-common/core/signal-registry.h" +#include "irc/core/signal-registry.h" #include "special-vars.h" #include "lib-config/iconfig.h" #include "settings.h" @@ -181,7 +183,7 @@ void chatnets_init(void) chatnets = NULL; signal_add_first__event_connected(sig_connected); - signal_add__setup_reread(read_chatnets); + signal_add__setup_reread((signal_func_setup_reread_t) read_chatnets); signal_add_first__irssi_init_read_settings(read_chatnets); } @@ -189,7 +191,7 @@ void chatnets_deinit(void) { module_uniq_destroy("CHATNET"); - signal_remove__event_("connected", sig_connected); - signal_remove__setup_reread(read_chatnets); + signal_remove__event_connected(sig_connected); + signal_remove__setup_reread((signal_func_setup_reread_t) read_chatnets); signal_remove__irssi_init_read_settings(read_chatnets); } diff --git a/src/core/commands.c b/src/core/commands.c index f5701f66..0cd9449d 100644 --- a/src/core/commands.c +++ b/src/core/commands.c @@ -917,7 +917,7 @@ static void parse_command(const char *command, int expand_aliases, g_free(orig); } -static void event_command(const char *line, SERVER_REC *server, void *item) +static void event_command(const char *line, SERVER_REC *server, WI_ITEM_REC *item) { char *cmdchar; int expand_aliases = TRUE; diff --git a/src/core/core.c b/src/core/core.c index e92c4a44..7b6b4601 100644 --- a/src/core/core.c +++ b/src/core/core.c @@ -28,6 +28,7 @@ #include "net-disconnect.h" #include "signals.h" #include "signal-registry.h" +#include "fe-common/core/signal-registry.h" #include "settings.h" #include "session.h" #ifdef HAVE_CAPSICUM diff --git a/src/core/expandos.c b/src/core/expandos.c index 22fd0c71..40fdc202 100644 --- a/src/core/expandos.c +++ b/src/core/expandos.c @@ -23,6 +23,7 @@ #include "modules.h" #include "signals.h" #include "signal-registry.h" +#include "fe-common/core/signal-registry.h" #include "expandos.h" #include "settings.h" #include "commands.h" @@ -523,7 +524,7 @@ static void sig_message_public(SERVER_REC *server, const char *msg, } static void sig_message_private(SERVER_REC *server, const char *msg, - const char *nick, const char *address) + const char *nick, const char *address, const char *target) { g_free_not_null(last_privmsg_from); last_privmsg_from = g_strdup(nick); diff --git a/src/core/ignore.c b/src/core/ignore.c index 522facbd..70d9a4b9 100644 --- a/src/core/ignore.c +++ b/src/core/ignore.c @@ -526,7 +526,7 @@ void ignore_init(void) time_tag = g_timeout_add(1000, (GSourceFunc) unignore_timeout, NULL); read_ignores(); - signal_add__setup_reread(read_ignores); + signal_add__setup_reread((signal_func_setup_reread_t) read_ignores); } void ignore_deinit(void) @@ -536,5 +536,5 @@ void ignore_deinit(void) ignore_destroy(ignores->data, TRUE); nickmatch_deinit(nickmatch); - signal_remove__setup_reread(read_ignores); + signal_remove__setup_reread((signal_func_setup_reread_t) read_ignores); } diff --git a/src/core/log-away.c b/src/core/log-away.c index 039da427..ab2eaad1 100644 --- a/src/core/log-away.c +++ b/src/core/log-away.c @@ -21,6 +21,7 @@ #include "module.h" #include "signals.h" #include "signal-registry.h" +#include "irc/core/signal-registry.h" #include "levels.h" #include "log.h" #include "servers.h" @@ -31,7 +32,7 @@ static LOG_REC *awaylog; static int away_filepos; static int away_msgs; -static void sig_log_written(LOG_REC *log) +static void sig_log_written(LOG_REC *log, const char *u0) { if (log != awaylog) return; diff --git a/src/core/log.c b/src/core/log.c index 069504f6..750b77c9 100644 --- a/src/core/log.c +++ b/src/core/log.c @@ -21,6 +21,7 @@ #include "module.h" #include "signals.h" #include "signal-registry.h" +#include "fe-common/core/signal-registry.h" #include "commands.h" #include "levels.h" #include "misc.h" @@ -599,7 +600,7 @@ void log_init(void) read_settings(); signal_add__setup_changed(read_settings); - signal_add__setup_reread(log_read_config); + signal_add__setup_reread((signal_func_setup_reread_t) log_read_config); signal_add__irssi_init_finished(log_read_config); } @@ -613,6 +614,6 @@ void log_deinit(void) g_free_not_null(log_timestamp); signal_remove__setup_changed(read_settings); - signal_remove__setup_reread(log_read_config); + signal_remove__setup_reread((signal_func_setup_reread_t) log_read_config); signal_remove__irssi_init_finished(log_read_config); } diff --git a/src/core/nicklist.c b/src/core/nicklist.c index 07e4a813..2f75f926 100644 --- a/src/core/nicklist.c +++ b/src/core/nicklist.c @@ -444,7 +444,7 @@ void nicklist_set_own(CHANNEL_REC *channel, NICK_REC *nick) g_hash_table_insert(channel->nicks, nick->nick, nick); } -static void sig_channel_created(CHANNEL_REC *channel) +static void sig_channel_created(CHANNEL_REC *channel, void *u0) { g_return_if_fail(IS_CHANNEL(channel)); diff --git a/src/core/nickmatch-cache.c b/src/core/nickmatch-cache.c index f4ba8892..9bdc41f0 100644 --- a/src/core/nickmatch-cache.c +++ b/src/core/nickmatch-cache.c @@ -104,7 +104,7 @@ void nickmatch_cache_init(void) { lists = NULL; signal_add__nicklist_new(sig_nick_new); - signal_add__nicklist_changed(sig_nick_new); + signal_add__nicklist_changed((signal_func_nicklist_changed_t) sig_nick_new); signal_add__nicklist_host_changed(sig_nick_new); signal_add__nicklist_remove(sig_nick_remove); } @@ -115,7 +115,7 @@ void nickmatch_cache_deinit(void) g_slist_free(lists); signal_remove__nicklist_new(sig_nick_new); - signal_remove__nicklist_changed(sig_nick_new); + signal_remove__nicklist_changed((signal_func_nicklist_changed_t) sig_nick_new); signal_remove__nicklist_host_changed(sig_nick_new); signal_remove__nicklist_remove(sig_nick_remove); } diff --git a/src/core/servers-reconnect.c b/src/core/servers-reconnect.c index 9d971d1f..525e05c0 100644 --- a/src/core/servers-reconnect.c +++ b/src/core/servers-reconnect.c @@ -23,6 +23,7 @@ #include "network.h" #include "signals.h" #include "signal-registry.h" +#include "irc/core/signal-registry.h" #include "chat-protocols.h" #include "servers.h" @@ -504,9 +505,9 @@ void servers_reconnect_init(void) reconnect_timeout_tag = g_timeout_add(1000, (GSourceFunc) server_reconnect_timeout, NULL); read_settings(); - signal_add__server_connect_failed(sig_reconnect); + signal_add__server_connect_failed((signal_func_server_connect_failed_t) sig_reconnect); signal_add__server_disconnected(sig_reconnect); - signal_add__event_("connected", sig_connected); + signal_add__event_connected(sig_connected); signal_add__chat_protocol_deinit(sig_chat_protocol_deinit); signal_add__setup_changed(read_settings); @@ -519,9 +520,9 @@ void servers_reconnect_deinit(void) { g_source_remove(reconnect_timeout_tag); - signal_remove__server_connect_failed(sig_reconnect); + signal_remove__server_connect_failed((signal_func_server_connect_failed_t) sig_reconnect); signal_remove__server_disconnected(sig_reconnect); - signal_remove__event_("connected", sig_connected); + signal_remove__event_connected(sig_connected); signal_remove__chat_protocol_deinit(sig_chat_protocol_deinit); signal_remove__setup_changed(read_settings); diff --git a/src/core/servers-setup.c b/src/core/servers-setup.c index 687a0727..7e35db08 100644 --- a/src/core/servers-setup.c +++ b/src/core/servers-setup.c @@ -21,6 +21,7 @@ #include "module.h" #include "signals.h" #include "signal-registry.h" +#include "fe-common/core/signal-registry.h" #include "network.h" #include "lib-config/iconfig.h" #include "settings.h" @@ -659,7 +660,7 @@ void servers_setup_init(void) read_settings(); signal_add__setup_changed(read_settings); - signal_add__setup_reread(read_servers); + signal_add__setup_reread((signal_func_setup_reread_t) read_servers); signal_add__irssi_init_read_settings(read_servers); } @@ -673,7 +674,7 @@ void servers_setup_deinit(void) server_setup_destroy(setupservers->data); signal_remove__setup_changed(read_settings); - signal_remove__setup_reread(read_servers); + signal_remove__setup_reread((signal_func_setup_reread_t) read_servers); signal_remove__irssi_init_read_settings(read_servers); module_uniq_destroy("SERVER SETUP"); diff --git a/src/core/session.c b/src/core/session.c index 4dca3438..07206102 100644 --- a/src/core/session.c +++ b/src/core/session.c @@ -21,6 +21,7 @@ #include "module.h" #include "signals.h" #include "signal-registry.h" +#include "fe-common/core/signal-registry.h" #include "commands.h" #include "args.h" #include "network.h" diff --git a/src/core/settings.c b/src/core/settings.c index f3a6ab9a..2f5313c1 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -21,6 +21,7 @@ #include "module.h" #include "signals.h" #include "signal-registry.h" +#include "fe-common/core/signal-registry.h" #include "commands.h" #include "levels.h" #include "misc.h" @@ -886,7 +887,7 @@ void settings_init(void) (GSourceFunc) sig_autosave, NULL); signal_add__irssi_init_finished(sig_init_finished); signal_add__irssi_init_userinfo_changed(sig_init_userinfo_changed); - signal_add__gui_exit(sig_autosave); + signal_add__gui_exit((signal_func_gui_exit_t) sig_autosave); } static void settings_hash_free(const char *key, SETTINGS_REC *rec) @@ -899,7 +900,7 @@ void settings_deinit(void) g_source_remove(timeout_tag); signal_remove__irssi_init_finished(sig_init_finished); signal_remove__irssi_init_userinfo_changed(sig_init_userinfo_changed); - signal_remove__gui_exit(sig_autosave); + signal_remove__gui_exit((signal_func_gui_exit_t) sig_autosave); g_slist_foreach(last_invalid_modules, (GFunc) g_free, NULL); g_slist_free(last_invalid_modules); diff --git a/src/core/signal-registry-macros.h b/src/core/signal-registry-macros.h index 33c96397..b6cd41d2 100644 --- a/src/core/signal-registry-macros.h +++ b/src/core/signal-registry-macros.h @@ -6,22 +6,23 @@ " " -> "_" "_" -> "__" */ -inline static void signal_register_fix_name(char *var) { - char *i, *o ; - for (i = o = var; *i; i++, o++) { - if (*i == '_') { - if (i[1] == '_') { - i++; - *o = '_'; - } else { - *o = ' '; - } +inline static void signal_register_fix_name(char *var) +{ + char *i, *o ; + for (i = o = var; *i; i++, o++) { + if (*i == '_') { + if (i[1] == '_') { + i++; + *o = '_'; } else { - *o = *i; + *o = ' '; } + } else { + *o = *i; } - *o = '\0'; } + *o = '\0'; +} #define SIGNAL_REGISTER(SIGNAL, NUM, PROTO, ...) \ inline static int signal_emit__ ## SIGNAL PROTO { \ @@ -79,7 +80,7 @@ inline static void signal_register_fix_name(char *var) { signal_remove_full__ ## SIGNAL (func, data); \ } \ -#define SIGNAL_REGISTER_F(SIGNAL, NUM, PROTO, ARG, ...) \ +#define SIGNAL_REGISTER_(SIGNAL, NUM, PROTO, PROTO_, ARG, ...) \ inline static int signal_emit__ ## SIGNAL ## _ PROTO { \ int ret; \ char *signal_name, base_signal_name[] = #SIGNAL; \ @@ -90,7 +91,7 @@ inline static void signal_register_fix_name(char *var) { return ret; \ } \ \ - typedef void (*signal_func_ ## SIGNAL ## __t) PROTO ; \ + typedef void (*signal_func_ ## SIGNAL ## __t) PROTO_ ; \ \ inline static void signal_add_full__ ## SIGNAL ## _ \ (const char *module, int priority, \ diff --git a/src/core/signal-registry.def b/src/core/signal-registry.def index 09ae7ae2..45db3a09 100644 --- a/src/core/signal-registry.def +++ b/src/core/signal-registry.def @@ -1,6 +1,6 @@ // core SIGNAL_REGISTER(gui_exit, 0, (void)) -SIGNAL_REGISTER(gui_dialog, 2, (char *type, const char *text), +SIGNAL_REGISTER(gui_dialog, 2, (const char *type, const char *text), type, text) // chat-protocols.c: @@ -49,11 +49,12 @@ SIGNAL_REGISTER(list_subcommands, 1, (const char *command), SIGNAL_REGISTER(error_command, 2, (int_in_ptr err, const char *cmd), err, cmd) -SIGNAL_REGISTER(send_command, 3, (char *args, SERVER_REC *server, WI_ITEM_REC *wi_item), +SIGNAL_REGISTER(send_command, 3, (const char *args, SERVER_REC *server, WI_ITEM_REC *wi_item), args, server, wi_item) SIGNAL_REGISTER(send_text, 3, (const char *line, SERVER_REC *server, WI_ITEM_REC *wi_item), line, server, wi_item) -SIGNAL_REGISTER_F(command, 3, (const char *cmd, const char *args, SERVER_REC *server, WI_ITEM_REC *wi_item), +SIGNAL_REGISTER_(command, 3, (const char *cmd, const char *args, SERVER_REC *server, WI_ITEM_REC *wi_item), + (const char *args, SERVER_REC *server, WI_ITEM_REC *wi_item), cmd, args, server, wi_item) SIGNAL_REGISTER(default_command, 3, (const char *args, SERVER_REC *server, WI_ITEM_REC *wi_item), args, server, wi_item) @@ -61,9 +62,9 @@ SIGNAL_REGISTER(default_command, 3, (const char *args, SERVER_REC *server, WI_IT // chat-commands.c: SIGNAL_REGISTER(chat_protocol_unknown, 1, (const char *protocol), protocol) -SIGNAL_REGISTER(message_own__public, 3, (SERVER_REC *server, char *msg, char *target), +SIGNAL_REGISTER(message_own__public, 3, (SERVER_REC *server, const char *msg, const char *target), server, msg, target) -SIGNAL_REGISTER(message_own__private, 4, (SERVER_REC *server, char *msg, char *target, char *orig_target), +SIGNAL_REGISTER(message_own__private, 4, (SERVER_REC *server, const char *msg, const char *target, const char *orig_target), server, msg, target, orig_target) // ignore.c: @@ -163,7 +164,7 @@ SIGNAL_REGISTER(server_disconnected, 1, (SERVER_REC *server), server) SIGNAL_REGISTER(server_quit, 2, (SERVER_REC *server, char *msg), server, msg) -SIGNAL_REGISTER(server_sendmsg, 4, (SERVER_REC *server, char *target, char *msg, int_in_ptr target_type), +SIGNAL_REGISTER(server_sendmsg, 4, (SERVER_REC *server, const char *target, const char *msg, int_in_ptr target_type), server, target, msg, target_type) SIGNAL_REGISTER(server_destroyed, 1, (SERVER_REC *server), server) diff --git a/src/core/signal-registry.def.in b/src/core/signal-registry.def.in index 8bc5378c..83d60282 100644 --- a/src/core/signal-registry.def.in +++ b/src/core/signal-registry.def.in @@ -1,6 +1,6 @@ // core "gui exit" - "gui dialog", char *type, const char *text + "gui dialog", const char *type, const char *text // chat-protocols.c: "chat protocol created", CHAT_PROTOCOL_REC @@ -30,15 +30,15 @@ "list subcommands", const char *command "error command", int err, const char *cmd - "send command", char *args, SERVER_REC, WI_ITEM_REC + "send command", const char *args, SERVER_REC, WI_ITEM_REC "send text", const char *line, SERVER_REC, WI_ITEM_REC "command ", const char *args, SERVER_REC, WI_ITEM_REC "default command", const char *args, SERVER_REC, WI_ITEM_REC // chat-commands.c: "chat protocol unknown", const char *protocol - "message own_public", SERVER_REC, char *msg, char *target - "message own_private", SERVER_REC, char *msg, char *target, char *orig_target + "message own_public", SERVER_REC, const char *msg, const char *target + "message own_private", SERVER_REC, const char *msg, const char *target, const char *orig_target // ignore.c: "ignore created", IGNORE_REC @@ -98,7 +98,7 @@ "server connect failed", SERVER_REC, const char *msg "server disconnected", SERVER_REC "server quit", SERVER_REC, char *msg - "server sendmsg", SERVER_REC, char *target, char *msg, int target_type + "server sendmsg", SERVER_REC, const char *target, const char *msg, int target_type "server destroyed", SERVER_REC // servers-setup.c diff --git a/src/fe-common/core/signal-registry.def b/src/fe-common/core/signal-registry.def index 44965ede..bcc4c95f 100644 --- a/src/fe-common/core/signal-registry.def +++ b/src/fe-common/core/signal-registry.def @@ -8,13 +8,15 @@ SIGNAL_REGISTER(gui_print_text_finished, 1, (WINDOW_REC *window), window) // completion.c: -SIGNAL_REGISTER_F(complete_command, 5, (const char *cmd, GList **completions/**/, WINDOW_REC *window, const char *word, char *linestart, int *want_space), +SIGNAL_REGISTER_(complete_command, 5, (const char *cmd, GList **completions/**/, WINDOW_REC *window, const char *word, char *linestart, int *want_space), + (GList **completions/**/, WINDOW_REC *window, const char *word, char *linestart, int *want_space), cmd, completions, window, word, linestart, want_space) SIGNAL_REGISTER(complete_word, 5, (GList **completions/**/, WINDOW_REC *window, const char *word, char *linestart, int *want_space), completions, window, word, linestart, want_space) SIGNAL_REGISTER(complete_erase, 3, (WINDOW_REC *window, const char *word, const char *linestart), window, word, linestart) -SIGNAL_REGISTER_F(complete_erase_command, 3, (const char *cmd, WINDOW_REC *window, const char *word, const char *linestart), +SIGNAL_REGISTER_(complete_erase_command, 3, (const char *cmd, WINDOW_REC *window, const char *word, const char *linestart), + (WINDOW_REC *window, const char *word, const char *linestart), cmd, window, word, linestart) SIGNAL_REGISTER(completion_removed, 1, (const char *word), word) @@ -88,7 +90,8 @@ SIGNAL_REGISTER(key_created, 1, (KEY_REC *key), key) SIGNAL_REGISTER(key_destroyed, 1, (KEY_REC *key), key) -SIGNAL_REGISTER_F(key, 3, (const char *key, const char *data, void *gui_data, KEYINFO_REC *keyinfo), +SIGNAL_REGISTER_(key, 3, (const char *key, const char *data, void *gui_data, KEYINFO_REC *keyinfo), + (const char *data, void *gui_data, KEYINFO_REC *keyinfo), key, data, gui_data, keyinfo) SIGNAL_REGISTER(gui_entry_redirect, 4, (SIGNAL_FUNC func, const char *entry, int_in_ptr flags, void *data), func, entry, flags, data) diff --git a/src/irc/core/channel-events.c b/src/irc/core/channel-events.c index 3e07d886..3dff1174 100644 --- a/src/irc/core/channel-events.c +++ b/src/irc/core/channel-events.c @@ -53,27 +53,35 @@ static void check_join_failure(IRC_SERVER_REC *server, const char *channel) } } -static void irc_server_event(IRC_SERVER_REC *server, const char *line) +static void irc_server_event(SERVER_REC *server, const char *line, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; char *params, *numeric, *channel; + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + /* We'll be checking "4xx " for channels which we haven't joined yet. 4xx are error codes and should indicate that the join failed. */ params = event_get_params(line, 3, &numeric, NULL, &channel); if (numeric[0] == '4') - check_join_failure(server, channel); + check_join_failure(irc_server, channel); g_free(params); } -static void event_no_such_channel(IRC_SERVER_REC *server, const char *data) +static void event_no_such_channel(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; CHANNEL_REC *chanrec; CHANNEL_SETUP_REC *setup; char *params, *channel; + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 2, NULL, &channel); chanrec = *channel == '!' && channel[1] != '\0' ? channel_find(SERVER(server), channel) : NULL; @@ -84,23 +92,27 @@ static void event_no_such_channel(IRC_SERVER_REC *server, const char *data) chanrec->server->connrec->chatnet); if (setup != NULL && setup->autojoin) { /* it's autojoin channel though, so create it */ - irc_send_cmdv(server, "JOIN !%s", chanrec->name); + irc_send_cmdv(irc_server, "JOIN !%s", chanrec->name); g_free(params); return; } } - check_join_failure(server, channel); + check_join_failure(irc_server, channel); g_free(params); } -static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data) +static void event_duplicate_channel(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; CHANNEL_REC *chanrec; char *params, *channel, *p; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + /* this new addition to ircd breaks completely with older "standards", "nick Duplicate ::!!channel ...." */ params = event_get_params(data, 3, NULL, NULL, &channel); @@ -151,44 +163,56 @@ static void channel_change_topic(IRC_SERVER_REC *server, const char *channel, signal_emit__channel_topic_changed(chanrec); } -static void event_topic_get(IRC_SERVER_REC *server, const char *data) +static void event_topic_get(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; char *params, *channel, *topic; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 3, NULL, &channel, &topic); - channel_change_topic(server, channel, topic, NULL, 0); + channel_change_topic(irc_server, channel, topic, NULL, 0); g_free(params); } -static void event_topic(IRC_SERVER_REC *server, const char *data, +static void event_topic(SERVER_REC *server, const char *data, const char *nick, const char *addr) { + IRC_SERVER_REC *irc_server; char *params, *channel, *topic, *mask; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 2, &channel, &topic); mask = addr == NULL ? g_strdup(nick) : g_strconcat(nick, "!", addr, NULL); - channel_change_topic(server, channel, topic, mask, time(NULL)); + channel_change_topic(irc_server, channel, topic, mask, time(NULL)); g_free(mask); g_free(params); } -static void event_topic_info(IRC_SERVER_REC *server, const char *data) +static void event_topic_info(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; char *params, *channel, *topicby, *topictime; time_t t; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 4, NULL, &channel, &topicby, &topictime); t = (time_t) atol(topictime); - channel_change_topic(server, channel, NULL, topicby, t); + channel_change_topic(irc_server, channel, NULL, topicby, t); g_free(params); } @@ -215,20 +239,24 @@ static IRC_CHANNEL_REC *channel_find_unjoined(IRC_SERVER_REC *server, return NULL; } -static void event_join(IRC_SERVER_REC *server, const char *data, const char *nick, const char *address) +static void event_join(SERVER_REC *server, const char *data, const char *nick, const char *address) { + IRC_SERVER_REC *irc_server; char *params, *channel, *tmp, *shortchan; IRC_CHANNEL_REC *chanrec; g_return_if_fail(data != NULL); - if (g_ascii_strcasecmp(nick, server->nick) != 0) { + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + + if (g_ascii_strcasecmp(nick, irc_server->nick) != 0) { /* someone else joined channel, no need to do anything */ return; } - if (server->userhost == NULL) - server->userhost = g_strdup(address); + if (irc_server->userhost == NULL) + irc_server->userhost = g_strdup(address); params = event_get_params(data, 1, &channel); tmp = strchr(channel, 7); /* ^G does something weird.. */ @@ -241,7 +269,7 @@ static void event_join(IRC_SERVER_REC *server, const char *data, const char *nic it's name, it's not known when /join is called so rename !channel here to !ABCDEchannel */ shortchan = g_strdup_printf("!%s", channel+6); - chanrec = channel_find_unjoined(server, shortchan); + chanrec = channel_find_unjoined(irc_server, shortchan); if (chanrec != NULL) { channel_change_name(CHANNEL(chanrec), channel); g_free(chanrec->name); @@ -249,16 +277,16 @@ static void event_join(IRC_SERVER_REC *server, const char *data, const char *nic } else { /* well, did we join it with full name? if so, and if this was the first short one, change it's name. */ - chanrec = channel_find_unjoined(server, channel); + chanrec = channel_find_unjoined(irc_server, channel); if (chanrec != NULL && - irc_channel_find(server, shortchan) == NULL) { + irc_channel_find(irc_server, shortchan) == NULL) { channel_change_visible_name(CHANNEL(chanrec), shortchan); } } } - chanrec = irc_channel_find(server, channel); + chanrec = irc_channel_find(irc_server, channel); if (chanrec != NULL && chanrec->joined) { /* already joined this channel - probably a broken proxy that forgot to send PART between */ @@ -269,12 +297,12 @@ static void event_join(IRC_SERVER_REC *server, const char *data, const char *nic if (chanrec == NULL) { /* look again, because of the channel name cut issues. */ - chanrec = channel_find_unjoined(server, channel); + chanrec = channel_find_unjoined(irc_server, channel); } if (chanrec == NULL) { /* didn't get here with /join command.. */ - chanrec = irc_channel_create(server, channel, shortchan, TRUE); + chanrec = irc_channel_create(irc_server, channel, shortchan, TRUE); } chanrec->joined = TRUE; @@ -287,14 +315,18 @@ static void event_join(IRC_SERVER_REC *server, const char *data, const char *nic g_free(params); } -static void event_part(IRC_SERVER_REC *server, const char *data, const char *nick) +static void event_part(SERVER_REC *server, const char *data, const char *nick, const char *u0) { + IRC_SERVER_REC *irc_server; char *params, *channel, *reason; CHANNEL_REC *chanrec; g_return_if_fail(data != NULL); - if (g_ascii_strcasecmp(nick, server->nick) != 0) { + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + + if (g_ascii_strcasecmp(nick, irc_server->nick) != 0) { /* someone else part, no need to do anything here */ return; } @@ -310,16 +342,20 @@ static void event_part(IRC_SERVER_REC *server, const char *data, const char *nic g_free(params); } -static void event_kick(IRC_SERVER_REC *server, const char *data) +static void event_kick(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; CHANNEL_REC *chanrec; char *params, *channel, *nick, *reason; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 3, &channel, &nick, &reason); - if (g_ascii_strcasecmp(nick, server->nick) != 0) { + if (g_ascii_strcasecmp(nick, irc_server->nick) != 0) { /* someone else was kicked, no need to do anything */ g_free(params); return; @@ -327,7 +363,7 @@ static void event_kick(IRC_SERVER_REC *server, const char *data) chanrec = channel_find(SERVER(server), channel); if (chanrec != NULL) { - irc_server_purge_output(server, channel); + irc_server_purge_output(irc_server, channel); chanrec->kicked = TRUE; channel_destroy(chanrec); } @@ -335,32 +371,36 @@ static void event_kick(IRC_SERVER_REC *server, const char *data) g_free(params); } -static void event_invite(IRC_SERVER_REC *server, const char *data) +static void event_invite(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; char *params, *channel, *shortchan; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 2, NULL, &channel); - if (irc_channel_find(server, channel) == NULL) { + if (irc_channel_find(irc_server, channel) == NULL) { /* check if we're supposed to autojoin this channel */ CHANNEL_SETUP_REC *setup; - setup = channel_setup_find(channel, server->connrec->chatnet); + setup = channel_setup_find(channel, irc_server->connrec->chatnet); if (setup == NULL && channel[0] == '!' && strlen(channel) > 6) { shortchan = g_strdup_printf("!%s", channel+6); setup = channel_setup_find(shortchan, - server->connrec->chatnet); + irc_server->connrec->chatnet); g_free(shortchan); } if (setup != NULL && setup->autojoin && settings_get_bool("join_auto_chans_on_invite")) - server->channels_join(SERVER(server), channel, TRUE); + irc_server->channels_join(SERVER(server), channel, TRUE); } - g_free_not_null(server->last_invite); - server->last_invite = g_strdup(channel); + g_free_not_null(irc_server->last_invite); + irc_server->last_invite = g_strdup(channel); g_free(params); } @@ -369,11 +409,11 @@ void channel_events_init(void) settings_add_bool("misc", "join_auto_chans_on_invite", TRUE); signal_add_last__server_event(irc_server_event); - signal_add_first__event_403(event_no_such_channel); /* no such channel */ - signal_add_first__event_407(event_duplicate_channel); /* duplicate channel */ + signal_add_first__event_("403", event_no_such_channel); /* no such channel */ + signal_add_first__event_("407", event_duplicate_channel); /* duplicate channel */ signal_add__event_("topic", event_topic); - signal_add_first__event_join(event_join); + signal_add_first__event_("join", event_join); signal_add__event_("part", event_part); signal_add__event_("kick", event_kick); signal_add__event_("invite", event_invite); diff --git a/src/irc/core/channel-rejoin.c b/src/irc/core/channel-rejoin.c index 3da184f4..6fef3862 100644 --- a/src/irc/core/channel-rejoin.c +++ b/src/irc/core/channel-rejoin.c @@ -113,13 +113,17 @@ static int channel_rejoin(IRC_SERVER_REC *server, const char *channel) return 1; } -static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data) +static void event_duplicate_channel(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; CHANNEL_REC *chanrec; char *params, *channel, *p; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 3, NULL, NULL, &channel); p = strchr(channel, ' '); if (p != NULL) *p = '\0'; @@ -134,7 +138,7 @@ static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data) note that this same 407 is sent when trying to create !!channel that already exists so we don't want to try rejoining then. */ - if (channel_rejoin(server, channel)) { + if (channel_rejoin(irc_server, channel)) { signal_stop(); } } @@ -143,23 +147,27 @@ static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data) g_free(params); } -static void event_target_unavailable(IRC_SERVER_REC *server, const char *data) +static void event_target_unavailable(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; char *params, *channel; IRC_CHANNEL_REC *chanrec; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 2, NULL, &channel); if (server_ischannel(SERVER(server), channel)) { - chanrec = irc_channel_find(server, channel); + chanrec = irc_channel_find(irc_server, channel); if (chanrec != NULL && chanrec->joined) { /* dalnet event - can't change nick while banned in channel */ } else { /* channel is unavailable - try to join again a bit later */ - if (channel_rejoin(server, channel)) { + if (channel_rejoin(irc_server, channel)) { signal_stop(); } } @@ -170,27 +178,29 @@ static void event_target_unavailable(IRC_SERVER_REC *server, const char *data) /* join ok/failed - remove from rejoins list. this happens always after join except if the "target unavailable" error happens again */ -static void sig_remove_rejoin(IRC_CHANNEL_REC *channel) +static void sig_remove_rejoin(CHANNEL_REC *channel) { + IRC_CHANNEL_REC *irc_channel; REJOIN_REC *rec; - if (!IS_IRC_CHANNEL(channel)) + if ((irc_channel = IRC_CHANNEL(channel)) == NULL) return; - rec = rejoin_find(channel->server, channel->name); + rec = rejoin_find(irc_channel->server, irc_channel->name); if (rec != NULL && rec->joining) { /* join failed, remove the rejoin */ - rejoin_destroy(channel->server, rec); + rejoin_destroy(irc_channel->server, rec); } } -static void sig_disconnected(IRC_SERVER_REC *server) +static void sig_disconnected(SERVER_REC *server) { - if (!IS_IRC_SERVER(server)) + IRC_SERVER_REC *irc_server; + if ((irc_server = IRC_SERVER(server)) == NULL) return; - while (server->rejoin_channels != NULL) - rejoin_destroy(server, server->rejoin_channels->data); + while (irc_server->rejoin_channels != NULL) + rejoin_destroy(irc_server, irc_server->rejoin_channels->data); } static void server_rejoin_channels(IRC_SERVER_REC *server) @@ -268,8 +278,8 @@ void channel_rejoin_init(void) (GSourceFunc) sig_rejoin, NULL); command_bind_irc("rmrejoins", NULL, (SIGNAL_FUNC) cmd_rmrejoins); - signal_add_first__event_407(event_duplicate_channel); - signal_add_first__event_437(event_target_unavailable); + signal_add_first__event_("407", event_duplicate_channel); + signal_add_first__event_("437", event_target_unavailable); signal_add_first__channel_joined(sig_remove_rejoin); signal_add_first__channel_destroyed(sig_remove_rejoin); signal_add__server_disconnected(sig_disconnected); diff --git a/src/irc/core/channels-query.c b/src/irc/core/channels-query.c index f563aa80..42976e98 100644 --- a/src/irc/core/channels-query.c +++ b/src/irc/core/channels-query.c @@ -41,6 +41,7 @@ loop: #include "module.h" #include "misc.h" #include "signals.h" +#include "core/signal-registry.h" #include "signal-registry.h" #include "settings.h" @@ -68,28 +69,31 @@ typedef struct { GSList *queries[CHANNEL_QUERIES]; /* All queries that need to be asked from server */ } SERVER_QUERY_REC; -static void sig_connected(IRC_SERVER_REC *server) +static void sig_connected(SERVER_REC *server) { + IRC_SERVER_REC *irc_server; SERVER_QUERY_REC *rec; g_return_if_fail(server != NULL); - if (!IS_IRC_SERVER(server)) + if ((irc_server = IRC_SERVER(server)) == NULL) return; rec = g_new0(SERVER_QUERY_REC, 1); - server->chanqueries = rec; + irc_server->chanqueries = rec; } -static void sig_disconnected(IRC_SERVER_REC *server) +static void sig_disconnected(SERVER_REC *server) { + IRC_SERVER_REC *irc_server; SERVER_QUERY_REC *rec; int n; g_return_if_fail(server != NULL); - if (!IS_IRC_SERVER(server)) + irc_server = IRC_SERVER(server); + if (irc_server == NULL) return; - rec = server->chanqueries; + rec = irc_server->chanqueries; g_return_if_fail(rec != NULL); for (n = 0; n < CHANNEL_QUERIES; n++) @@ -97,7 +101,7 @@ static void sig_disconnected(IRC_SERVER_REC *server) g_slist_free(rec->current_queries); g_free(rec); - server->chanqueries = NULL; + irc_server->chanqueries = NULL; } /* Add channel to query list */ @@ -131,12 +135,13 @@ static void query_remove_all(IRC_CHANNEL_REC *channel) query_check(channel->server); } -static void sig_channel_destroyed(IRC_CHANNEL_REC *channel) +static void sig_channel_destroyed(CHANNEL_REC *channel) { + IRC_CHANNEL_REC *irc_channel; g_return_if_fail(channel != NULL); - - if (IS_IRC_CHANNEL(channel)) - query_remove_all(channel); + irc_channel = IRC_CHANNEL(channel); + if (irc_channel != NULL) + query_remove_all(irc_channel); } static int channels_have_all_names(IRC_SERVER_REC *server) @@ -314,13 +319,17 @@ static void channel_checksync(IRC_CHANNEL_REC *channel) } /* Error occurred when trying to execute query - abort and try again. */ -static void query_current_error(IRC_SERVER_REC *server) +static void query_current_error(SERVER_REC *server, const char *u0, const char *u1, const char *u2) { + IRC_SERVER_REC *irc_server; SERVER_QUERY_REC *rec; GSList *tmp; int query, abort_query; - rec = server->chanqueries; + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + + rec = irc_server->chanqueries; /* fix the thing that went wrong - or if it was already fixed, then all we can do is abort. */ @@ -328,15 +337,15 @@ static void query_current_error(IRC_SERVER_REC *server) query = rec->current_query_type; if (query == CHANNEL_QUERY_WHO) { - if (server->no_multi_who) + if (irc_server->no_multi_who) abort_query = TRUE; else - server->no_multi_who = TRUE; + irc_server->no_multi_who = TRUE; } else { - if (server->no_multi_mode) + if (irc_server->no_multi_mode) abort_query = TRUE; else - server->no_multi_mode = TRUE; + irc_server->no_multi_mode = TRUE; } if (!abort_query) { @@ -354,27 +363,29 @@ static void query_current_error(IRC_SERVER_REC *server) g_slist_free(rec->current_queries); rec->current_queries = NULL; - query_check(server); + query_check(irc_server); } -static void sig_channel_joined(IRC_CHANNEL_REC *channel) +static void sig_channel_joined(CHANNEL_REC *channel) { - if (!IS_IRC_CHANNEL(channel)) + IRC_CHANNEL_REC *irc_channel; + + if ((irc_channel = IRC_CHANNEL(channel)) == NULL) return; if (!settings_get_bool("channel_sync")) return; /* Add channel to query lists */ - if (!channel->no_modes) - query_add_channel(channel, CHANNEL_QUERY_MODE); - if (g_hash_table_size(channel->nicks) < + if (!irc_channel->no_modes) + query_add_channel(irc_channel, CHANNEL_QUERY_MODE); + if (g_hash_table_size(irc_channel->nicks) < settings_get_int("channel_max_who_sync")) - query_add_channel(channel, CHANNEL_QUERY_WHO); - if (!channel->no_modes) - query_add_channel(channel, CHANNEL_QUERY_BMODE); + query_add_channel(irc_channel, CHANNEL_QUERY_WHO); + if (!irc_channel->no_modes) + query_add_channel(irc_channel, CHANNEL_QUERY_BMODE); - query_check(channel->server); + query_check(irc_channel->server); } static void channel_got_query(IRC_CHANNEL_REC *chanrec, int query_type) @@ -396,17 +407,21 @@ static void channel_got_query(IRC_CHANNEL_REC *chanrec, int query_type) query_check(chanrec->server); } -static void event_channel_mode(IRC_SERVER_REC *server, const char *data, - const char *nick) +static void event_channel_mode(SERVER_REC *server, const char *data, + const char *nick, const char *u0) { + IRC_SERVER_REC *irc_server; IRC_CHANNEL_REC *chanrec; char *params, *channel, *mode; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 3 | PARAM_FLAG_GETREST, NULL, &channel, &mode); - chanrec = irc_channel_find(server, channel); + chanrec = irc_channel_find(irc_server, channel); if (chanrec != NULL) { if (chanrec->key != NULL && strchr(mode, 'k') == NULL) { /* we joined the channel with a key, @@ -420,8 +435,9 @@ static void event_channel_mode(IRC_SERVER_REC *server, const char *data, g_free(params); } -static void event_end_of_who(IRC_SERVER_REC *server, const char *data) +static void event_end_of_who(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; SERVER_QUERY_REC *rec; GSList *tmp, *next; char *params, *channel, **channels; @@ -429,12 +445,15 @@ static void event_end_of_who(IRC_SERVER_REC *server, const char *data) g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 2, NULL, &channel); multiple = strchr(channel, ',') != NULL; channels = g_strsplit(channel, ",", -1); failed = FALSE; - rec = server->chanqueries; + rec = irc_server->chanqueries; for (tmp = rec->current_queries; tmp != NULL; tmp = next) { IRC_CHANNEL_REC *chanrec = tmp->data; @@ -443,7 +462,7 @@ static void event_end_of_who(IRC_SERVER_REC *server, const char *data) continue; if (chanrec->ownnick->host == NULL && multiple && - !server->one_endofwho) { + !irc_server->one_endofwho) { /* we should receive our own host for each channel. However, some servers really are stupid enough not to reply anything to /WHO requests.. */ @@ -457,26 +476,30 @@ static void event_end_of_who(IRC_SERVER_REC *server, const char *data) g_strfreev(channels); if (multiple) - server->one_endofwho = TRUE; + irc_server->one_endofwho = TRUE; if (failed) { /* server didn't understand multiple WHO replies, send them again separately */ - query_current_error(server); + query_current_error((SERVER_REC *) irc_server, NULL, NULL, NULL); } g_free(params); } -static void event_end_of_banlist(IRC_SERVER_REC *server, const char *data) +static void event_end_of_banlist(SERVER_REC *server, const char *data, const char *u0, const char *u1) { + IRC_SERVER_REC *irc_server; IRC_CHANNEL_REC *chanrec; char *params, *channel; g_return_if_fail(data != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + params = event_get_params(data, 2, NULL, &channel); - chanrec = irc_channel_find(server, channel); + chanrec = irc_channel_find(irc_server, channel); if (chanrec != NULL) channel_got_query(chanrec, CHANNEL_QUERY_BMODE); diff --git a/src/irc/core/ctcp.c b/src/irc/core/ctcp.c index 98b68436..620d64d9 100644 --- a/src/irc/core/ctcp.c +++ b/src/irc/core/ctcp.c @@ -118,7 +118,7 @@ void ctcp_send_reply(IRC_SERVER_REC *server, const char *data) /* CTCP ping */ static void ctcp_ping(IRC_SERVER_REC *server, const char *data, - const char *nick) + const char *nick, const char *u0, const char *u1) { char *str; @@ -166,7 +166,7 @@ static void ctcp_send_parsed_reply(IRC_SERVER_REC *server, const char *nick, /* CTCP version */ static void ctcp_version(IRC_SERVER_REC *server, const char *data, - const char *nick) + const char *nick, const char *u0, const char *u1) { ctcp_send_parsed_reply(server, nick, "VERSION", settings_get_str("ctcp_version_reply")); @@ -174,7 +174,7 @@ static void ctcp_version(IRC_SERVER_REC *server, const char *data, /* CTCP time */ static void ctcp_time(IRC_SERVER_REC *server, const char *data, - const char *nick) + const char *nick, const char *u0, const char *u1) { char *str, *reply; @@ -190,7 +190,7 @@ static void ctcp_time(IRC_SERVER_REC *server, const char *data, /* CTCP userinfo */ static void ctcp_userinfo(IRC_SERVER_REC *server, const char *data, - const char *nick) + const char *nick, const char *u0, const char *u1) { ctcp_send_parsed_reply(server, nick, "USERINFO", settings_get_str("ctcp_userinfo_reply")); @@ -198,7 +198,7 @@ static void ctcp_userinfo(IRC_SERVER_REC *server, const char *data, /* CTCP clientinfo */ static void ctcp_clientinfo(IRC_SERVER_REC *server, const char *data, - const char *nick) + const char *nick, const char *u0, const char *u1) { GString *str; GSList *tmp; @@ -265,7 +265,7 @@ static void ctcp_reply(IRC_SERVER_REC *server, const char *data, g_free(str); } -static void event_privmsg(IRC_SERVER_REC *server, const char *data, +static void event_privmsg(SERVER_REC *server, const char *data, const char *nick, const char *addr) { char *params, *target, *msg; @@ -273,6 +273,9 @@ static void event_privmsg(IRC_SERVER_REC *server, const char *data, g_return_if_fail(data != NULL); + if (!IS_IRC_SERVER(server)) + return; + params = event_get_params(data, 2, &target, &msg); /* handle only ctcp messages.. */ @@ -283,20 +286,23 @@ static void event_privmsg(IRC_SERVER_REC *server, const char *data, if (msg[len-1] == '\001') msg[len-1] = '\0'; - signal_emit__ctcp_msg(server, msg, nick, addr, target); + signal_emit__ctcp_msg((IRC_SERVER_REC *) server, msg, nick, addr, target); signal_stop(); } g_free(params); } -static void event_notice(IRC_SERVER_REC *server, const char *data, +static void event_notice(SERVER_REC *server, const char *data, const char *nick, const char *addr) { char *params, *target, *ptr, *msg; g_return_if_fail(data != NULL); + if (!IS_IRC_SERVER(server)) + return; + params = event_get_params(data, 2, &target, &msg); /* handle only ctcp replies */ @@ -304,22 +310,24 @@ static void event_notice(IRC_SERVER_REC *server, const char *data, ptr = strrchr(++msg, 1); if (ptr != NULL) *ptr = '\0'; - signal_emit__ctcp_reply(server, msg, nick, addr, target); + signal_emit__ctcp_reply((IRC_SERVER_REC *) server, msg, nick, addr, target); signal_stop(); } g_free(params); } -static void sig_disconnected(IRC_SERVER_REC *server) +static void sig_disconnected(SERVER_REC *server) { + IRC_SERVER_REC *irc_server; g_return_if_fail(server != NULL); - if (!IS_IRC_SERVER(server)) + irc_server = IRC_SERVER(server); + if (irc_server == NULL) return; - g_slist_free(server->ctcpqueue); - server->ctcpqueue = NULL; + g_slist_free(irc_server->ctcpqueue); + irc_server->ctcpqueue = NULL; } void ctcp_init(void) @@ -332,15 +340,15 @@ void ctcp_init(void) settings_add_int("flood", "max_ctcp_queue", 5); signal_add__server_disconnected(sig_disconnected); - signal_add_first__event_privmsg(event_privmsg); - signal_add_first__event_notice(event_notice); + signal_add_first__event_("privmsg", event_privmsg); + signal_add_first__event_("notice", event_notice); signal_add__ctcp_msg(ctcp_msg); signal_add__ctcp_reply(ctcp_reply); - signal_add__ctcp_msg_ping(ctcp_ping); - signal_add__ctcp_msg_version(ctcp_version); - signal_add__ctcp_msg_time(ctcp_time); - signal_add__ctcp_msg_userinfo(ctcp_userinfo); - signal_add__ctcp_msg_clientinfo(ctcp_clientinfo); + signal_add__ctcp_msg_("ping", ctcp_ping); + signal_add__ctcp_msg_("version", ctcp_version); + signal_add__ctcp_msg_("time", ctcp_time); + signal_add__ctcp_msg_("userinfo", ctcp_userinfo); + signal_add__ctcp_msg_("clientinfo", ctcp_clientinfo); ctcp_register("ping"); ctcp_register("version"); @@ -359,9 +367,9 @@ void ctcp_deinit(void) signal_remove__event_("notice", event_notice); signal_remove__ctcp_msg(ctcp_msg); signal_remove__ctcp_reply(ctcp_reply); - signal_remove__ctcp_msg_ping(ctcp_ping); - signal_remove__ctcp_msg_version(ctcp_version); - signal_remove__ctcp_msg_time(ctcp_time); - signal_remove__ctcp_msg_userinfo(ctcp_userinfo); - signal_remove__ctcp_msg_clientinfo(ctcp_clientinfo); + signal_remove__ctcp_msg_("ping", ctcp_ping); + signal_remove__ctcp_msg_("version", ctcp_version); + signal_remove__ctcp_msg_("time", ctcp_time); + signal_remove__ctcp_msg_("userinfo", ctcp_userinfo); + signal_remove__ctcp_msg_("clientinfo", ctcp_clientinfo); } diff --git a/src/irc/core/irc-channels-setup.c b/src/irc/core/irc-channels-setup.c index 5501d9e6..5c396a34 100644 --- a/src/irc/core/irc-channels-setup.c +++ b/src/irc/core/irc-channels-setup.c @@ -20,6 +20,7 @@ #include "module.h" #include "signals.h" +#include "signal-registry.h" #include "channels.h" void irc_channels_setup_init(void) diff --git a/src/irc/core/irc-channels.c b/src/irc/core/irc-channels.c index be547699..00e20d36 100644 --- a/src/irc/core/irc-channels.c +++ b/src/irc/core/irc-channels.c @@ -224,18 +224,20 @@ static char *irc_get_join_data(CHANNEL_REC *channel) g_strconcat(irc_channel->name, " ", irc_channel->key, NULL); } -static void sig_channel_created(IRC_CHANNEL_REC *channel) +static void sig_channel_created(CHANNEL_REC *channel, void *u0) { - if (IS_IRC_CHANNEL(channel)) - channel->get_join_data = irc_get_join_data; + IRC_CHANNEL_REC *irc_channel; + if ((irc_channel = IRC_CHANNEL(channel)) != NULL) + irc_channel->get_join_data = irc_get_join_data; } -static void sig_channel_destroyed(IRC_CHANNEL_REC *channel) +static void sig_channel_destroyed(CHANNEL_REC *channel) { - if (!IS_IRC_CHANNEL(channel)) + IRC_CHANNEL_REC *irc_channel; + if ((irc_channel = IRC_CHANNEL(channel)) == NULL) return; - if (!channel->server->disconnected && !channel->left && !channel->kicked) { + if (!irc_channel->server->disconnected && !irc_channel->left && !irc_channel->kicked) { /* destroying channel record without actually having left the channel yet */ signal_emit__command_("part", "", (SERVER_REC *)channel->server, (WI_ITEM_REC *)channel); diff --git a/src/irc/core/irc-chatnets.c b/src/irc/core/irc-chatnets.c index 8411e2f3..db4eeb19 100644 --- a/src/irc/core/irc-chatnets.c +++ b/src/irc/core/irc-chatnets.c @@ -20,6 +20,7 @@ #include "module.h" #include "signals.h" +#include "core/signal-registry.h" #include "lib-config/iconfig.h" #include "settings.h" @@ -33,77 +34,81 @@ void ircnet_create(IRC_CHATNET_REC *rec) chatnet_create((CHATNET_REC *) rec); } -static void sig_chatnet_read(IRC_CHATNET_REC *rec, CONFIG_NODE *node) +static void sig_chatnet_read(CHATNET_REC *rec, CONFIG_NODE *node) { + IRC_CHATNET_REC *irc_rec; char *value; - if (!IS_IRC_CHATNET(rec)) + if ((irc_rec = IRC_CHATNET(rec)) == NULL) return; value = config_node_get_str(node, "usermode", NULL); - rec->usermode = (value != NULL && *value != '\0') ? g_strdup(value) : NULL; + irc_rec->usermode = (value != NULL && *value != '\0') ? g_strdup(value) : NULL; value = config_node_get_str(node, "alternate_nick", NULL); - rec->alternate_nick = (value != NULL && *value != '\0') ? g_strdup(value) : NULL; + irc_rec->alternate_nick = (value != NULL && *value != '\0') ? g_strdup(value) : NULL; - rec->max_cmds_at_once = config_node_get_int(node, "cmdmax", 0); - rec->cmd_queue_speed = config_node_get_int(node, "cmdspeed", 0); - rec->max_query_chans = config_node_get_int(node, "max_query_chans", 0); + irc_rec->max_cmds_at_once = config_node_get_int(node, "cmdmax", 0); + irc_rec->cmd_queue_speed = config_node_get_int(node, "cmdspeed", 0); + irc_rec->max_query_chans = config_node_get_int(node, "max_query_chans", 0); - rec->max_kicks = config_node_get_int(node, "max_kicks", 0); - rec->max_msgs = config_node_get_int(node, "max_msgs", 0); - rec->max_modes = config_node_get_int(node, "max_modes", 0); - rec->max_whois = config_node_get_int(node, "max_whois", 0); + irc_rec->max_kicks = config_node_get_int(node, "max_kicks", 0); + irc_rec->max_msgs = config_node_get_int(node, "max_msgs", 0); + irc_rec->max_modes = config_node_get_int(node, "max_modes", 0); + irc_rec->max_whois = config_node_get_int(node, "max_whois", 0); - rec->sasl_mechanism = g_strdup(config_node_get_str(node, "sasl_mechanism", NULL)); - rec->sasl_username = g_strdup(config_node_get_str(node, "sasl_username", NULL)); - rec->sasl_password = g_strdup(config_node_get_str(node, "sasl_password", NULL)); + irc_rec->sasl_mechanism = g_strdup(config_node_get_str(node, "sasl_mechanism", NULL)); + irc_rec->sasl_username = g_strdup(config_node_get_str(node, "sasl_username", NULL)); + irc_rec->sasl_password = g_strdup(config_node_get_str(node, "sasl_password", NULL)); } -static void sig_chatnet_saved(IRC_CHATNET_REC *rec, CONFIG_NODE *node) +static void sig_chatnet_saved(CHATNET_REC *rec, CONFIG_NODE *node) { - if (!IS_IRC_CHATNET(rec)) + IRC_CHATNET_REC *irc_rec; + if ((irc_rec = IRC_CHATNET(rec)) == NULL) return; - if (rec->usermode != NULL) - iconfig_node_set_str(node, "usermode", rec->usermode); + if (irc_rec->usermode != NULL) + iconfig_node_set_str(node, "usermode", irc_rec->usermode); - if (rec->alternate_nick != NULL) - iconfig_node_set_str(node, "alternate_nick", rec->alternate_nick); + if (irc_rec->alternate_nick != NULL) + iconfig_node_set_str(node, "alternate_nick", irc_rec->alternate_nick); - if (rec->max_cmds_at_once > 0) - iconfig_node_set_int(node, "cmdmax", rec->max_cmds_at_once); - if (rec->cmd_queue_speed > 0) - iconfig_node_set_int(node, "cmdspeed", rec->cmd_queue_speed); - if (rec->max_query_chans > 0) - iconfig_node_set_int(node, "max_query_chans", rec->max_query_chans); + if (irc_rec->max_cmds_at_once > 0) + iconfig_node_set_int(node, "cmdmax", irc_rec->max_cmds_at_once); + if (irc_rec->cmd_queue_speed > 0) + iconfig_node_set_int(node, "cmdspeed", irc_rec->cmd_queue_speed); + if (irc_rec->max_query_chans > 0) + iconfig_node_set_int(node, "max_query_chans", irc_rec->max_query_chans); - if (rec->max_kicks > 0) - iconfig_node_set_int(node, "max_kicks", rec->max_kicks); - if (rec->max_msgs > 0) - iconfig_node_set_int(node, "max_msgs", rec->max_msgs); - if (rec->max_modes > 0) - iconfig_node_set_int(node, "max_modes", rec->max_modes); - if (rec->max_whois > 0) - iconfig_node_set_int(node, "max_whois", rec->max_whois); + if (irc_rec->max_kicks > 0) + iconfig_node_set_int(node, "max_kicks", irc_rec->max_kicks); + if (irc_rec->max_msgs > 0) + iconfig_node_set_int(node, "max_msgs", irc_rec->max_msgs); + if (irc_rec->max_modes > 0) + iconfig_node_set_int(node, "max_modes", irc_rec->max_modes); + if (irc_rec->max_whois > 0) + iconfig_node_set_int(node, "max_whois", irc_rec->max_whois); - if (rec->sasl_mechanism != NULL) - iconfig_node_set_str(node, "sasl_mechanism", rec->sasl_mechanism); - if (rec->sasl_username != NULL) - iconfig_node_set_str(node, "sasl_username", rec->sasl_username); - if (rec->sasl_password != NULL) - iconfig_node_set_str(node, "sasl_password", rec->sasl_password); + if (irc_rec->sasl_mechanism != NULL) + iconfig_node_set_str(node, "sasl_mechanism", irc_rec->sasl_mechanism); + if (irc_rec->sasl_username != NULL) + iconfig_node_set_str(node, "sasl_username", irc_rec->sasl_username); + if (irc_rec->sasl_password != NULL) + iconfig_node_set_str(node, "sasl_password", irc_rec->sasl_password); } -static void sig_chatnet_destroyed(IRC_CHATNET_REC *rec) +static void sig_chatnet_destroyed(CHATNET_REC *rec) { - if (IS_IRC_CHATNET(rec)) { - g_free(rec->usermode); - g_free(rec->alternate_nick); - g_free(rec->sasl_mechanism); - g_free(rec->sasl_username); - g_free(rec->sasl_password); - } + IRC_CHATNET_REC *irc_rec; + if ((irc_rec = IRC_CHATNET(rec)) == NULL) + return; + + g_free(irc_rec->usermode); + g_free(irc_rec->alternate_nick); + g_free(irc_rec->sasl_mechanism); + g_free(irc_rec->sasl_username); + g_free(irc_rec->sasl_password); } void irc_chatnets_init(void) diff --git a/src/irc/core/irc-commands.c b/src/irc/core/irc-commands.c index 68dfa7db..312497ea 100644 --- a/src/irc/core/irc-commands.c +++ b/src/irc/core/irc-commands.c @@ -861,17 +861,18 @@ static void cmd_server_purge(const char *data, IRC_SERVER_REC *server) } /* destroy all knockouts in server */ -static void sig_server_disconnected(IRC_SERVER_REC *server) +static void sig_server_disconnected(SERVER_REC *server) { + IRC_SERVER_REC *irc_server; g_return_if_fail(server != NULL); - if (!IS_IRC_SERVER(server)) + if ((irc_server = IRC_SERVER(server)) == NULL) return; - g_free(server->last_nick); + g_free(irc_server->last_nick); - while (server->knockoutlist != NULL) - knockout_destroy(server, server->knockoutlist->data); + while (irc_server->knockoutlist != NULL) + knockout_destroy(irc_server, irc_server->knockoutlist->data); } /* destroy all knockouts in channel */ diff --git a/src/irc/core/irc.c b/src/irc/core/irc.c index eddac78e..7efb0fdc 100644 --- a/src/irc/core/irc.c +++ b/src/irc/core/irc.c @@ -24,6 +24,7 @@ #include "net-sendbuffer.h" #include "rawlog.h" #include "misc.h" +#include "core/signal-registry.h" #include "signal-registry.h" #include "irc-servers.h" @@ -312,15 +313,19 @@ static void strip_params_colon(char *const params) } } -static void irc_server_event(IRC_SERVER_REC *server, const char *line, +static void irc_server_event(SERVER_REC *server, const char *line, const char *nick, const char *address) { + IRC_SERVER_REC *irc_server; int emitted; const char *signal; char *event, *args; g_return_if_fail(line != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + /* split event / args */ event = g_strconcat("event ", line, NULL); args = strchr(event+6, ' '); @@ -329,17 +334,17 @@ static void irc_server_event(IRC_SERVER_REC *server, const char *line, ascii_strdown(event); /* check if event needs to be redirected */ - signal = server_redirect_get_signal(server, nick, event, args); + signal = server_redirect_get_signal(irc_server, nick, event, args); if (signal != NULL) - rawlog_redirect(server->rawlog, signal); + rawlog_redirect(irc_server->rawlog, signal); /* emit it */ current_server_event = event+6; emitted = signal == NULL ? - signal_emit__event_(line, (SERVER_REC *)server, args, nick, address) : - signal_emit_raw(signal, 4, server, args, nick, address); + signal_emit__event_(line, server, args, nick, address) : + signal_emit_raw(signal, 4, irc_server, args, nick, address); if (!emitted) - signal_emit__default_event((SERVER_REC *)server, line, nick, address); + signal_emit__default_event(server, line, nick, address); current_server_event = NULL; g_free(event); @@ -383,16 +388,20 @@ static char *irc_parse_prefix(char *line, char **nick, char **address) } /* Parse command line sent by server */ -static void irc_parse_incoming_line(IRC_SERVER_REC *server, char *line) +static void irc_parse_incoming_line(SERVER_REC *server, char *line) { + IRC_SERVER_REC *irc_server; char *nick, *address; g_return_if_fail(server != NULL); g_return_if_fail(line != NULL); + if ((irc_server = IRC_SERVER(server)) == NULL) + return; + line = irc_parse_prefix(line, &nick, &address); if (*line != '\0') - signal_emit__server_event((SERVER_REC *)server, line, nick, address); + signal_emit__server_event(server, line, nick, address); } /* input function: handle incoming server messages */ @@ -428,17 +437,18 @@ static void irc_parse_incoming(SERVER_REC *server) server_unref(server); } -static void irc_init_server(IRC_SERVER_REC *server) +static void irc_init_server(SERVER_REC *server) { + IRC_SERVER_REC *irc_server; g_return_if_fail(server != NULL); - if (!IS_IRC_SERVER(server)) + if ((irc_server = IRC_SERVER(server)) == NULL) return; - server->readtag = - g_input_add(net_sendbuffer_handle(server->handle), + irc_server->readtag = + g_input_add(net_sendbuffer_handle(irc_server->handle), G_INPUT_READ, - (GInputFunction) irc_parse_incoming, server); + (GInputFunction) irc_parse_incoming, irc_server); } void irc_irc_init(void) diff --git a/src/irc/core/signal-registry.def b/src/irc/core/signal-registry.def index ad9b0c37..92096147 100644 --- a/src/irc/core/signal-registry.def +++ b/src/irc/core/signal-registry.def @@ -20,17 +20,33 @@ SIGNAL_REGISTER(channel_rejoin_remove, 2, (SERVER_REC *server, REJOIN_REC *rejoi SIGNAL_REGISTER(channel_rejoin_new, 2, (SERVER_REC *server, REJOIN_REC *rejoin), server, rejoin) +// channels-query.c: +SIGNAL_REGISTER(chanquery_mode, 4, (SERVER_REC *server, const char *args, const char *sender_nick, const char *sender_address), + server, args, sender_nick, sender_address) +SIGNAL_REGISTER(chanquery_who_end, 4, (SERVER_REC *server, const char *args, const char *sender_nick, const char *sender_address), + server, args, sender_nick, sender_address) +SIGNAL_REGISTER(chanquery_abort, 4, (SERVER_REC *server, const char *args, const char *sender_nick, const char *sender_address), + server, args, sender_nick, sender_address) +SIGNAL_REGISTER(silent_event_who, 4, (SERVER_REC *server, const char *args, const char *sender_nick, const char *sender_address), + server, args, sender_nick, sender_address) +SIGNAL_REGISTER(chanquery_ban, 4, (SERVER_REC *server, const char *args, const char *sender_nick, const char *sender_address), + server, args, sender_nick, sender_address) +SIGNAL_REGISTER(chanquery_ban_end, 4, (SERVER_REC *server, const char *args, const char *sender_nick, const char *sender_address), + server, args, sender_nick, sender_address) + // ctcp.c: SIGNAL_REGISTER(ctcp_msg, 5, (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), irc_server, args, nick, addr, target) -SIGNAL_REGISTER_F(ctcp_msg, 5, (const char *cmd, IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), +SIGNAL_REGISTER_(ctcp_msg, 5, (const char *cmd, IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), + (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), cmd, irc_server, args, nick, addr, target) SIGNAL_REGISTER(default_ctcp_msg, 5, (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), irc_server, args, nick, addr, target) SIGNAL_REGISTER(ctcp_reply, 5, (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), irc_server, args, nick, addr, target) -SIGNAL_REGISTER_F(ctcp_reply, 5, (const char *cmd, IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), +SIGNAL_REGISTER_(ctcp_reply, 5, (const char *cmd, IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), + (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), cmd, irc_server, args, nick, addr, target) SIGNAL_REGISTER(default_ctcp_reply, 5, (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), irc_server, args, nick, addr, target) @@ -42,13 +58,17 @@ SIGNAL_REGISTER(event_connected, 1, (SERVER_REC *server), server) // irc-cap.c -SIGNAL_REGISTER_F(server_cap_ack, 1, (const char *cmd, IRC_SERVER_REC *irc_server), +SIGNAL_REGISTER_(server_cap_ack, 1, (const char *cmd, IRC_SERVER_REC *irc_server), + (IRC_SERVER_REC *irc_server), cmd, irc_server) -SIGNAL_REGISTER_F(server_cap_nak, 1, (const char *cmd, IRC_SERVER_REC *irc_server), +SIGNAL_REGISTER_(server_cap_nak, 1, (const char *cmd, IRC_SERVER_REC *irc_server), + (IRC_SERVER_REC *irc_server), cmd, irc_server) -SIGNAL_REGISTER_F(server_cap_new, 1, (const char *cmd, IRC_SERVER_REC *irc_server), +SIGNAL_REGISTER_(server_cap_new, 1, (const char *cmd, IRC_SERVER_REC *irc_server), + (IRC_SERVER_REC *irc_server), cmd, irc_server) -SIGNAL_REGISTER_F(server_cap_delete, 1, (const char *cmd, IRC_SERVER_REC *irc_server), +SIGNAL_REGISTER_(server_cap_delete, 1, (const char *cmd, IRC_SERVER_REC *irc_server), + (IRC_SERVER_REC *irc_server), cmd, irc_server) SIGNAL_REGISTER(server_cap_end, 1, (IRC_SERVER_REC *irc_server), irc_server) @@ -63,9 +83,10 @@ SIGNAL_REGISTER(server_sasl_success, 1, (SERVER_REC *server), // irc.c: -SIGNAL_REGISTER(server_event, 4, (SERVER_REC *server, char *data, char *sender_nick, char *sender_address), +SIGNAL_REGISTER(server_event, 4, (SERVER_REC *server, const char *data, const char *sender_nick, const char *sender_address), server, data, sender_nick, sender_address) -SIGNAL_REGISTER_F(event, 4, (const char *cmd, SERVER_REC *server, const char *args, const char *sender_nick, const char *sender_address), +SIGNAL_REGISTER_(event, 4, (const char *cmd, SERVER_REC *server, const char *args, const char *sender_nick, const char *sender_address), + (SERVER_REC *server, const char *args, const char *sender_nick, const char *sender_address), cmd, server, args, sender_nick, sender_address) SIGNAL_REGISTER(default_event, 4, (SERVER_REC *server, const char *data, const char *sender_nick, const char *sender_address), server, data, sender_nick, sender_address) @@ -76,7 +97,8 @@ SIGNAL_REGISTER(server_incoming, 2, (SERVER_REC *server, char *data), server, data) // (for perl parser..)) -SIGNAL_REGISTER_F(redir, 4, (const char *cmd, SERVER_REC *server, char *args, char *sender_nick, char *sender_address), +SIGNAL_REGISTER_(redir, 4, (const char *cmd, SERVER_REC *server, char *args, char *sender_nick, char *sender_address), + (SERVER_REC *server, char *args, char *sender_nick, char *sender_address), cmd, server, args, sender_nick, sender_address) // lag.c: @@ -117,14 +139,16 @@ SIGNAL_REGISTER(netsplit_remove, 1, (NETSPLIT_REC *netsplit), // dcc*.c: -SIGNAL_REGISTER_F(dcc_ctcp, 2, (const char *cmd, CHAT_DCC_REC *chat_dcc, char *args), +SIGNAL_REGISTER_(dcc_ctcp, 2, (const char *cmd, CHAT_DCC_REC *chat_dcc, char *args), + (CHAT_DCC_REC *chat_dcc, char *args), cmd, chat_dcc, args) SIGNAL_REGISTER(default_dcc_ctcp, 3, (CHAT_DCC_REC *chat_dcc, char *cmd, char *args), chat_dcc, cmd, args) SIGNAL_REGISTER(dcc_unknown_ctcp, 3, (char *args, char *sender, char *sendaddr), args, sender, sendaddr) -SIGNAL_REGISTER_F(dcc_reply, 2, (const char *cmd, CHAT_DCC_REC *chat_dcc, char *args), +SIGNAL_REGISTER_(dcc_reply, 2, (const char *cmd, CHAT_DCC_REC *chat_dcc, char *args), + (CHAT_DCC_REC *chat_dcc, char *args), cmd, chat_dcc, args) SIGNAL_REGISTER(default_dcc_reply, 3, (CHAT_DCC_REC *chat_dcc, char *cmd, char *args), chat_dcc, cmd, args) @@ -184,11 +208,13 @@ SIGNAL_REGISTER(default_ctcp_reply_dcc, 5, (IRC_SERVER_REC *irc_server, const ch irc_server, args, nick, addr, target) SIGNAL_REGISTER(ctcp_msg_dcc, 6, (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target, DCC_REC *dcc), irc_server, args, nick, addr, target, dcc) -SIGNAL_REGISTER_F(ctcp_msg_dcc, 6, (const char *cmd, IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target, DCC_REC *dcc), +SIGNAL_REGISTER_(ctcp_msg_dcc, 6, (const char *cmd, IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target, DCC_REC *dcc), + (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target, DCC_REC *dcc), cmd, irc_server, args, nick, addr, target, dcc) SIGNAL_REGISTER(ctcp_reply_dcc, 6, (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target, DCC_REC *dcc), irc_server, args, nick, addr, target, dcc) -SIGNAL_REGISTER_F(ctcp_reply_dcc, 5, (const char *cmd, IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), +SIGNAL_REGISTER_(ctcp_reply_dcc, 5, (const char *cmd, IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), + (IRC_SERVER_REC *irc_server, const char *args, const char *nick, const char *addr, const char *target), cmd, irc_server, args, nick, addr, target) // autoignore.c: diff --git a/src/irc/core/signal-registry.def.in b/src/irc/core/signal-registry.def.in index 82baa636..c16722b7 100644 --- a/src/irc/core/signal-registry.def.in +++ b/src/irc/core/signal-registry.def.in @@ -13,6 +13,14 @@ "channel rejoin remove", SERVER_REC, REJOIN_REC "channel rejoin new", SERVER_REC, REJOIN_REC +// channels-query.c: + "chanquery mode", SERVER_REC, const char *args, const char *sender_nick, const char *sender_address + "chanquery who end", SERVER_REC, const char *args, const char *sender_nick, const char *sender_address + "chanquery abort", SERVER_REC, const char *args, const char *sender_nick, const char *sender_address + "silent event who", SERVER_REC, const char *args, const char *sender_nick, const char *sender_address + "chanquery ban", SERVER_REC, const char *args, const char *sender_nick, const char *sender_address + "chanquery ban end", SERVER_REC, const char *args, const char *sender_nick, const char *sender_address + // ctcp.c: "ctcp msg", IRC_SERVER_REC, const char *args, const char *nick, const char *addr, const char *target @@ -40,7 +48,7 @@ // irc.c: - "server event", SERVER_REC, char *data, char *sender_nick, char *sender_address + "server event", SERVER_REC, const char *data, const char *sender_nick, const char *sender_address "event ", SERVER_REC, const char *args, const char *sender_nick, const char *sender_address "default event", SERVER_REC, const char *data, const char *sender_nick, const char *sender_address "whois default event", SERVER_REC, char *args, char *sender_nick, char *sender_address