static void event_command(const char *data) { const char *cmdchar; /* save current command line */ current_cmdline = data; /* for detecting if we're pasting text */ time_command_last = time_command_now; last_command_cmd = command_cmd; g_get_current_time(&time_command_now); command_cmd = *data != '\0' && strchr(settings_get_str("cmdchars"), *data) != NULL; /* /^command hides the output of the command */ cmdchar = *data == '\0' ? NULL : strchr(settings_get_str("cmdchars"), *data); if (cmdchar != NULL && (data[1] == '^' || (data[1] == *cmdchar && data[2] == '^')) && !command_hide_output++) { signal_add_first("print starting", (SIGNAL_FUNC) sig_stop); signal_add_first("print format", (SIGNAL_FUNC) sig_stop); signal_add_first("print text", (SIGNAL_FUNC) sig_stop); } }
void netsplit_init(void) { split_tag = g_timeout_add(1000, (GSourceFunc) split_check_old, NULL); signal_add_first("event join", (SIGNAL_FUNC) event_join); signal_add_first("event quit", (SIGNAL_FUNC) event_quit); signal_add("server disconnected", (SIGNAL_FUNC) sig_disconnected); }
void chatnets_init(void) { chatnets = NULL; signal_add_first("event connected", (SIGNAL_FUNC) sig_connected); signal_add("setup reread", (SIGNAL_FUNC) read_chatnets); signal_add_first("irssi init read settings", (SIGNAL_FUNC) read_chatnets); }
void gui_window_activities_init(void) { signal_add_first("window hilight", (SIGNAL_FUNC) sig_activity); signal_add_first("window activity", (SIGNAL_FUNC) sig_activity); signal_add("window hilight", (SIGNAL_FUNC) sig_activity_update); /* we need to use "window changed", so we can clear activity in all split windows in tab. */ signal_add("window changed", (SIGNAL_FUNC) sig_activity_update); }
void core_init(void) { dialog_type_queue = NULL; dialog_text_queue = NULL; client_start_time = time(NULL); modules_init(); pidwait_init(); net_disconnect_init(); signals_init(); signal_add_first("gui dialog", (SIGNAL_FUNC) sig_gui_dialog); signal_add_first("irssi init finished", (SIGNAL_FUNC) sig_init_finished); settings_init(); commands_init(); nickmatch_cache_init(); session_init(); #ifdef HAVE_CAPSICUM capsicum_init(); #endif chat_protocols_init(); chatnets_init(); expandos_init(); ignore_init(); servers_init(); write_buffer_init(); log_init(); log_away_init(); rawlog_init(); recode_init(); channels_init(); queries_init(); nicklist_init(); chat_commands_init(); wcwidth_wrapper_init(); settings_add_str("misc", "ignore_signals", ""); settings_add_bool("misc", "override_coredump_limit", FALSE); #ifdef HAVE_SYS_RESOURCE_H getrlimit(RLIMIT_CORE, &orig_core_rlimit); #endif read_settings(); signal_add("setup changed", (SIGNAL_FUNC) read_settings); signal_add("irssi init finished", (SIGNAL_FUNC) sig_irssi_init_finished); settings_check(); module_register("core", "core"); }
void channel_rejoin_init(void) { rejoin_tag = g_timeout_add(REJOIN_TIMEOUT, (GSourceFunc) sig_rejoin, NULL); command_bind("rmrejoins", NULL, (SIGNAL_FUNC) cmd_rmrejoins); signal_add_first("event 437", (SIGNAL_FUNC) event_target_unavailable); signal_add_first("channel joined", (SIGNAL_FUNC) sig_remove_rejoin); signal_add_first("channel destroyed", (SIGNAL_FUNC) sig_remove_rejoin); signal_add("server disconnected", (SIGNAL_FUNC) sig_disconnected); }
void fe_xmpp_messages_init(void) { signal_add("message xmpp history", sig_history); signal_add("message xmpp history action", sig_history_action); signal_add("message xmpp action", sig_action); signal_add("message xmpp own_action", sig_own_action); signal_add("message xmpp error", sig_error); signal_add_first("message xmpp own_public", sig_message_own_public); signal_add_first("message own_public", sig_message_ignore); }
void core_init(int argc, char *argv[]) { dialog_type_queue = NULL; dialog_text_queue = NULL; modules_init(); #ifndef WIN32 pidwait_init(); #endif net_disconnect_init(); net_sendbuffer_init(); signals_init(); signal_add_first("gui dialog", (SIGNAL_FUNC) sig_gui_dialog); signal_add_first("irssi init finished", (SIGNAL_FUNC) sig_init_finished); settings_init(); commands_init(); nickmatch_cache_init(); session_init(); chat_protocols_init(); chatnets_init(); expandos_init(); ignore_init(); servers_init(); write_buffer_init(); log_init(); log_away_init(); rawlog_init(); recode_init(); channels_init(); queries_init(); nicklist_init(); chat_commands_init(); settings_add_str("misc", "ignore_signals", ""); settings_add_bool("misc", "override_coredump_limit", TRUE); #ifdef HAVE_SYS_RESOURCE_H getrlimit(RLIMIT_CORE, &orig_core_rlimit); #endif read_settings(); signal_add("setup changed", (SIGNAL_FUNC) read_settings); signal_add("irssi init finished", (SIGNAL_FUNC) sig_irssi_init_finished); settings_check(); module_register("core", "core"); }
void fe_ignore_messages_init(void) { signal_add_first("message public", (SIGNAL_FUNC) sig_message_public); signal_add_first("message private", (SIGNAL_FUNC) sig_message_private); signal_add_first("message join", (SIGNAL_FUNC) sig_message_join); signal_add_first("message part", (SIGNAL_FUNC) sig_message_part); signal_add_first("message quit", (SIGNAL_FUNC) sig_message_quit); signal_add_first("message kick", (SIGNAL_FUNC) sig_message_kick); signal_add_first("message nick", (SIGNAL_FUNC) sig_message_nick); signal_add_first("message own_nick", (SIGNAL_FUNC) sig_message_own_nick); signal_add_first("message invite", (SIGNAL_FUNC) sig_message_invite); signal_add_first("message topic", (SIGNAL_FUNC) sig_message_topic); }
void channel_rejoin_init(void) { settings_add_bool("servers", "channels_rejoin_unavailable", TRUE); rejoin_tag = g_timeout_add(REJOIN_TIMEOUT, (GSourceFunc) sig_rejoin, NULL); command_bind_irc("rmrejoins", NULL, (SIGNAL_FUNC) cmd_rmrejoins); signal_add_first("event 407", (SIGNAL_FUNC) event_duplicate_channel); signal_add_first("event 437", (SIGNAL_FUNC) event_target_unavailable); signal_add_first("channel joined", (SIGNAL_FUNC) sig_remove_rejoin); signal_add_first("channel destroyed", (SIGNAL_FUNC) sig_remove_rejoin); signal_add("server disconnected", (SIGNAL_FUNC) sig_disconnected); }
void ctcp_init(void) { settings_add_str("misc", "ctcp_version_reply", PACKAGE" v$J - running on $sysname"); settings_add_int("flood", "max_ctcp_queue", 5); signal_add("server disconnected", (SIGNAL_FUNC) ctcp_deinit_server); signal_add_first("event privmsg", (SIGNAL_FUNC) event_privmsg); signal_add_first("event notice", (SIGNAL_FUNC) event_notice); signal_add("ctcp msg", (SIGNAL_FUNC) ctcp_msg); signal_add("ctcp reply", (SIGNAL_FUNC) ctcp_reply); signal_add("ctcp msg ping", (SIGNAL_FUNC) ctcp_ping); signal_add("ctcp msg version", (SIGNAL_FUNC) ctcp_version); signal_add("ctcp msg time", (SIGNAL_FUNC) ctcp_time); }
void sasl_init(void) { signal_add_first("server cap ack sasl", (SIGNAL_FUNC) sasl_start); signal_add_first("event authenticate", (SIGNAL_FUNC) sasl_step); signal_add_first("event 903", (SIGNAL_FUNC) sasl_success); signal_add_first("event 902", (SIGNAL_FUNC) sasl_fail); signal_add_first("event 904", (SIGNAL_FUNC) sasl_fail); signal_add_first("event 905", (SIGNAL_FUNC) sasl_fail); signal_add_first("event 906", (SIGNAL_FUNC) sasl_fail); signal_add_first("event 907", (SIGNAL_FUNC) sasl_already); signal_add_first("server disconnected", (SIGNAL_FUNC) sasl_disconnected); }
void fe_common_core_finish_init(void) { int setup_changed; signal_emit("irssi init read settings", 0); #ifdef SIGPIPE signal(SIGPIPE, SIG_IGN); #endif setup_changed = FALSE; if (cmdline_nick != NULL && *cmdline_nick != '\0') { /* override nick found from setup */ settings_set_str("nick", cmdline_nick); setup_changed = TRUE; } if (cmdline_hostname != NULL) { /* override host name found from setup */ settings_set_str("hostname", cmdline_hostname); setup_changed = TRUE; } sig_setup_changed(); signal_add_first("setup changed", (SIGNAL_FUNC) sig_setup_changed); /* _after_ windows are created.. */ g_log_set_default_handler((GLogFunc) glog_func, NULL); if (setup_changed) signal_emit("setup changed", 0); autorun_startup(); autoconnect_servers(); }
void fe_queries_init(void) { settings_add_level("lookandfeel", "autocreate_query_level", "MSGS DCCMSGS"); settings_add_bool("lookandfeel", "autocreate_own_query", TRUE); settings_add_time("lookandfeel", "autoclose_query", "0"); queryclose_tag = -1; read_settings(); signal_add("query created", (SIGNAL_FUNC) signal_query_created); signal_add("query destroyed", (SIGNAL_FUNC) signal_query_destroyed); signal_add("query server changed", (SIGNAL_FUNC) signal_query_server_changed); signal_add("query nick changed", (SIGNAL_FUNC) signal_query_nick_changed); signal_add("window item server changed", (SIGNAL_FUNC) signal_window_item_server_changed); signal_add("server connected", (SIGNAL_FUNC) sig_server_connected); signal_add("window changed", (SIGNAL_FUNC) sig_window_changed); signal_add_first("message private", (SIGNAL_FUNC) sig_message_private); signal_add("setup changed", (SIGNAL_FUNC) read_settings); command_bind("query", NULL, (SIGNAL_FUNC) cmd_query); command_bind("unquery", NULL, (SIGNAL_FUNC) cmd_unquery); command_bind("window server", NULL, (SIGNAL_FUNC) cmd_window_server); command_set_options("query", "window"); }
void fe_log_init(void) { autoremove_tag = g_timeout_add(60000, (GSourceFunc) sig_autoremove, NULL); settings_add_str("log", "autolog_path", "~/irclogs/$tag/$0.log"); settings_add_str("log", "autolog_level", "all"); settings_add_bool("log", "autolog", FALSE); autolog_level = 0; read_settings(); command_bind("log", NULL, (SIGNAL_FUNC) cmd_log); command_bind("log open", NULL, (SIGNAL_FUNC) cmd_log_open); command_bind("log close", NULL, (SIGNAL_FUNC) cmd_log_close); command_bind("log start", NULL, (SIGNAL_FUNC) cmd_log_start); command_bind("log stop", NULL, (SIGNAL_FUNC) cmd_log_stop); command_bind("log ", NULL, (SIGNAL_FUNC) cmd_log_list); command_bind("window log", NULL, (SIGNAL_FUNC) cmd_window_log); command_bind("window logfile", NULL, (SIGNAL_FUNC) cmd_window_logfile); signal_add_first("print text stripped", (SIGNAL_FUNC) sig_printtext_stripped); signal_add("window item remove", (SIGNAL_FUNC) sig_window_item_remove); signal_add("window refnum changed", (SIGNAL_FUNC) sig_window_refnum_changed); signal_add("log locked", (SIGNAL_FUNC) sig_log_locked); signal_add("log create failed", (SIGNAL_FUNC) sig_log_create_failed); signal_add("awaylog show", (SIGNAL_FUNC) sig_awaylog_show); signal_add("setup changed", (SIGNAL_FUNC) read_settings); }
void channel_events_init(void) { settings_add_bool("misc", "join_auto_chans_on_invite", TRUE); signal_add_last("server event", (SIGNAL_FUNC) irc_server_event); signal_add_first("event 403", (SIGNAL_FUNC) event_no_such_channel); /* no such channel */ signal_add_first("event 407", (SIGNAL_FUNC) event_duplicate_channel); /* duplicate channel */ signal_add("event topic", (SIGNAL_FUNC) event_topic); signal_add_first("event join", (SIGNAL_FUNC) event_join); signal_add("event part", (SIGNAL_FUNC) event_part); signal_add("event kick", (SIGNAL_FUNC) event_kick); signal_add("event invite", (SIGNAL_FUNC) event_invite); signal_add("event 332", (SIGNAL_FUNC) event_topic_get); signal_add("event 333", (SIGNAL_FUNC) event_topic_info); }
void channel_rejoin_init(void) { rejoin_tag = g_timeout_add(REJOIN_TIMEOUT, (GSourceFunc) sig_rejoin, NULL); signal_add_first("event 437", (SIGNAL_FUNC) event_target_unavailable); signal_add("server disconnected", (SIGNAL_FUNC) sig_disconnected); }
void irc_servers_init(void) { settings_add_str("misc", "usermode", DEFAULT_USER_MODE); settings_add_time("flood", "cmd_queue_speed", DEFAULT_CMD_QUEUE_SPEED); settings_add_int("flood", "cmds_max_at_once", DEFAULT_CMDS_MAX_AT_ONCE); cmd_tag = -1; signal_add_first("server connected", (SIGNAL_FUNC) sig_connected); signal_add_last("server disconnected", (SIGNAL_FUNC) sig_disconnected); signal_add_last("server quit", (SIGNAL_FUNC) sig_server_quit); signal_add("event 001", (SIGNAL_FUNC) event_connected); signal_add("event 004", (SIGNAL_FUNC) event_server_info); signal_add("event 005", (SIGNAL_FUNC) event_isupport); signal_add("event 375", (SIGNAL_FUNC) event_motd); signal_add_last("event 376", (SIGNAL_FUNC) event_end_of_motd); signal_add_last("event 422", (SIGNAL_FUNC) event_end_of_motd); /* no motd */ signal_add("event 254", (SIGNAL_FUNC) event_channels_formed); signal_add("event 396", (SIGNAL_FUNC) event_hosthidden); signal_add("event 465", (SIGNAL_FUNC) event_server_banned); signal_add("event error", (SIGNAL_FUNC) event_error); signal_add("event ping", (SIGNAL_FUNC) event_ping); signal_add("event empty", (SIGNAL_FUNC) event_empty); irc_servers_setup_init(); irc_servers_reconnect_init(); servers_redirect_init(); servers_idle_init(); }
void xmpp_servers_reconnect_init(void) { signal_add_first("server connect copy", sig_server_connect_copy); signal_add("server reconnect save status", sig_save_status); signal_add_last("server connected", sig_connected); }
void proxy_listen_init(void) { if (enabled) { return; } enabled = TRUE; next_line = g_string_new(NULL); proxy_clients = NULL; proxy_listens = NULL; read_settings(); signal_add("server incoming", (SIGNAL_FUNC) sig_incoming); signal_add("server event", (SIGNAL_FUNC) sig_server_event); signal_add("event connected", (SIGNAL_FUNC) event_connected); signal_add("server disconnected", (SIGNAL_FUNC) sig_server_disconnected); signal_add_first("event nick", (SIGNAL_FUNC) event_nick); signal_add("message own_public", (SIGNAL_FUNC) sig_message_own_public); signal_add("message own_private", (SIGNAL_FUNC) sig_message_own_private); signal_add("message irc own_action", (SIGNAL_FUNC) sig_message_own_action); signal_add("setup changed", (SIGNAL_FUNC) read_settings); signal_add("proxy client dump", (SIGNAL_FUNC) sig_dump); }
void dcc_server_init(void) { dcc_register_type("SERVER"); command_bind("dcc server", NULL, (SIGNAL_FUNC) cmd_dcc_server); command_bind("dcc close", NULL, (SIGNAL_FUNC) cmd_dcc_close); signal_add("dcc destroyed", (SIGNAL_FUNC) sig_dcc_destroyed); signal_add_first("dcc server message", (SIGNAL_FUNC) dcc_server_msg); }
void gui_channels_init(void) { signal_add_first("channel created", (SIGNAL_FUNC) sig_channel_created); signal_add("channel destroyed", (SIGNAL_FUNC) sig_channel_destroyed); signal_add("channel topic changed", (SIGNAL_FUNC) sig_channel_topic_changed); signal_add("tab pane focused", (SIGNAL_FUNC) sig_pane_focused); signal_add("tab pane unfocused", (SIGNAL_FUNC) sig_pane_unfocused); }
void setup_fish() { signal_add_first("server sendmsg", (SIGNAL_FUNC) encrypt_msg); signal_add_first("message private", (SIGNAL_FUNC) decrypt_msg); signal_add_first("message public", (SIGNAL_FUNC) decrypt_msg); signal_add_first("message irc notice", (SIGNAL_FUNC) decrypt_notice); signal_add_first("message irc action", (SIGNAL_FUNC) decrypt_action); signal_add_first("message own_private", (SIGNAL_FUNC) format_msg); signal_add_first("message own_public", (SIGNAL_FUNC) format_msg); signal_add_first("channel topic changed", (SIGNAL_FUNC) decrypt_changed_topic); signal_add_first("message topic", (SIGNAL_FUNC) decrypt_topic); signal_add_first("server incoming", (SIGNAL_FUNC) raw_handler); signal_add("query created", (SIGNAL_FUNC) do_auto_keyx); signal_add("query nick changed", (SIGNAL_FUNC) query_nick_changed); signal_add("complete command topic+", (SIGNAL_FUNC) sig_complete_topic_plus); command_bind("topic+", NULL, (SIGNAL_FUNC) cmd_crypt_topic); command_bind("notice+", NULL, (SIGNAL_FUNC) cmd_crypt_notice); command_bind("me+", NULL, (SIGNAL_FUNC) cmd_crypt_action); command_bind("setkey", NULL, (SIGNAL_FUNC) cmd_setkey); command_bind("delkey", NULL, (SIGNAL_FUNC) cmd_delkey); command_bind("key", NULL, (SIGNAL_FUNC) cmd_key); command_bind("showkey", NULL, (SIGNAL_FUNC) cmd_key); command_bind("keyx", NULL, (SIGNAL_FUNC) cmd_keyx); command_bind("setinipw", NULL, (SIGNAL_FUNC) cmd_setinipw); command_bind("unsetinipw", NULL, (SIGNAL_FUNC) cmd_unsetinipw); settings_add_bool_module("fish", "fish", "process_outgoing", 1); settings_add_bool_module("fish", "fish", "process_incoming", 1); settings_add_bool_module("fish", "fish", "auto_keyxchange", 1); settings_add_bool_module("fish", "fish", "nicktracker", 1); settings_add_str_module("fish", "fish", "mark_broken_block", "\002&\002"); settings_add_str_module("fish", "fish", "mark_encrypted", "\002>\002 "); settings_add_str_module("fish", "fish", "plain_prefix", "+p "); settings_add_int_module("fish", "fish", "mark_position", 1); }
void irc_nicklist_init(void) { signal_add("event nick", (SIGNAL_FUNC) event_nick); signal_add_first("event 352", (SIGNAL_FUNC) event_who); signal_add("silent event who", (SIGNAL_FUNC) event_who); signal_add("silent event whois", (SIGNAL_FUNC) event_whois); signal_add_first("event 311", (SIGNAL_FUNC) event_whois); signal_add_first("event 301", (SIGNAL_FUNC) event_whois_away); signal_add_first("event 313", (SIGNAL_FUNC) event_whois_ircop); signal_add("event 318", (SIGNAL_FUNC) event_end_of_whois); signal_add("event 353", (SIGNAL_FUNC) event_names_list); signal_add("event 366", (SIGNAL_FUNC) event_end_of_names); signal_add("event 433", (SIGNAL_FUNC) event_nick_in_use); signal_add("event 437", (SIGNAL_FUNC) event_target_unavailable); signal_add("event 302", (SIGNAL_FUNC) event_userhost); signal_add("userhost event", (SIGNAL_FUNC) event_userhost); signal_add("user mode changed", (SIGNAL_FUNC) sig_usermode); signal_add("server connected", (SIGNAL_FUNC) sig_connected); }
void stanzas_init(void) { signal_add("server connecting", register_stanzas); signal_add_first("server disconnected", unregister_stanzas); signal_add_last("xmpp send message", send_stanza); signal_add_last("xmpp send presence", send_stanza); signal_add_last("xmpp send iq", send_stanza); signal_add_last("xmpp send others", send_stanza); }
void hilight_text_init(void) { hilight_next = FALSE; last_nick_color = 0; read_hilight_config(); settings_add_str("misc", "hilight_color", "8"); settings_add_bool("misc", "hilight_only_nick", TRUE); signal_add_first("print text", (SIGNAL_FUNC) sig_print_text); signal_add_first("print text stripped", (SIGNAL_FUNC) sig_print_text_stripped); signal_add("setup reread", (SIGNAL_FUNC) read_hilight_config); signal_add_last("message public", (SIGNAL_FUNC) sig_message); signal_add_last("message private", (SIGNAL_FUNC) sig_message); command_bind("hilight", NULL, (SIGNAL_FUNC) cmd_hilight); command_bind("dehilight", NULL, (SIGNAL_FUNC) cmd_dehilight); command_set_options("hilight", "-color -level -channels nick nonick mask word regexp"); }
void textbuffer_reformat_init(void) { format = g_string_new(NULL); settings_add_bool("history", "scrollback_save_formats", FALSE); read_settings(); signal_add("print format", (SIGNAL_FUNC) sig_print_format); signal_add_first("gui print text finished", (SIGNAL_FUNC) sig_gui_printtext_finished); signal_add("setup changed", (SIGNAL_FUNC) read_settings); }
void fe_exec_init(void) { command_bind("exec", NULL, (SIGNAL_FUNC) cmd_exec); command_set_options("exec", "!- interactive nosh +name out +msg +notice +in window close +level quiet"); signal_exec_input = signal_get_uniq_id("exec input"); signal_add("pidwait", (SIGNAL_FUNC) sig_pidwait); signal_add("exec input", (SIGNAL_FUNC) sig_exec_input); signal_add("window destroyed", (SIGNAL_FUNC) sig_window_destroyed); signal_add_first("send text", (SIGNAL_FUNC) event_text); }
void dcc_chat_init(void) { command_bind("msg", NULL, (SIGNAL_FUNC) cmd_msg); command_bind("me", NULL, (SIGNAL_FUNC) cmd_me); command_bind("action", NULL, (SIGNAL_FUNC) cmd_action); command_bind("ctcp", NULL, (SIGNAL_FUNC) cmd_ctcp); command_bind("dcc chat", NULL, (SIGNAL_FUNC) cmd_dcc_chat); command_bind("mircdcc", NULL, (SIGNAL_FUNC) cmd_mircdcc); signal_add_first("dcc chat message", (SIGNAL_FUNC) dcc_chat_msg); signal_add("dcc ctcp dcc", (SIGNAL_FUNC) dcc_ctcp_redirect); }
void irc_flood_init(void) { settings_add_int("flood", "flood_timecheck", 8); settings_add_int("flood", "flood_max_msgs", 4); flood_tag = -1; read_settings(); signal_add("setup changed", (SIGNAL_FUNC) read_settings); signal_add_first("server connected", (SIGNAL_FUNC) flood_init_server); signal_add("server disconnected", (SIGNAL_FUNC) flood_deinit_server); autoignore_init(); }