void irc_dcc_init(void) { dcc_conns = NULL; dcc_timeouttag = g_timeout_add(1000, (GSourceFunc) dcc_timeout_func, NULL); settings_add_str("dcc", "dcc_port", "0"); settings_add_time("dcc", "dcc_timeout", "5min"); settings_add_str("dcc", "dcc_own_ip", ""); signal_add("event connected", (SIGNAL_FUNC) sig_connected); signal_add("server disconnected", (SIGNAL_FUNC) sig_server_disconnected); signal_add("server nick changed", (SIGNAL_FUNC) sig_server_nick_changed); signal_add("ctcp msg", (SIGNAL_FUNC) ctcp_msg); signal_add("ctcp reply", (SIGNAL_FUNC) ctcp_reply); signal_add("ctcp msg dcc", (SIGNAL_FUNC) ctcp_msg_dcc); signal_add("ctcp reply dcc", (SIGNAL_FUNC) ctcp_reply_dcc); signal_add("ctcp reply dcc reject", (SIGNAL_FUNC) ctcp_reply_dcc_reject); signal_add("event 401", (SIGNAL_FUNC) event_no_such_nick); command_bind("dcc", NULL, (SIGNAL_FUNC) cmd_dcc); command_bind("dcc close", NULL, (SIGNAL_FUNC) cmd_dcc_close); dcc_chat_init(); dcc_get_init(); dcc_send_init(); dcc_resume_init(); dcc_autoget_init(); dcc_server_init(); settings_check(); module_register("dcc", "irc"); }
void xmpp_commands_init(void) { command_set_options("connect", "+xmppnet"); command_set_options("server add", "-xmppnet"); command_bind("xmppconnect", NULL, (SIGNAL_FUNC)cmd_xmppconnect); command_set_options("xmppconnect", "ssl -network -host @port"); command_bind("xmppserver", NULL, (SIGNAL_FUNC)cmd_xmppserver); command_bind_xmpp("away", NULL, (SIGNAL_FUNC)cmd_away); command_bind_xmpp("quote", NULL, (SIGNAL_FUNC)cmd_quote); command_bind_xmpp("roster", NULL, (SIGNAL_FUNC)cmd_roster); command_bind_xmpp("roster full", NULL, (SIGNAL_FUNC)cmd_roster_full); command_bind_xmpp("roster add", NULL, (SIGNAL_FUNC)cmd_roster_add); command_set_options("roster add", "nosub"); command_bind_xmpp("roster remove", NULL, (SIGNAL_FUNC)cmd_roster_remove); command_bind_xmpp("roster name", NULL, (SIGNAL_FUNC)cmd_roster_name); command_bind_xmpp("roster group", NULL, (SIGNAL_FUNC)cmd_roster_group); command_bind_xmpp("presence", NULL, (SIGNAL_FUNC)cmd_presence); command_bind_xmpp("presence accept", NULL, (SIGNAL_FUNC)cmd_presence_accept); command_bind_xmpp("presence deny", NULL, (SIGNAL_FUNC)cmd_presence_deny); command_bind_xmpp("presence subscribe", NULL, (SIGNAL_FUNC)cmd_presence_subscribe); command_bind_xmpp("presence unsubscribe", NULL, (SIGNAL_FUNC)cmd_presence_unsubscribe); command_bind_xmpp("me", NULL, (SIGNAL_FUNC)cmd_me); settings_add_str("xmpp", "xmpp_default_away_mode", "away"); }
void term_common_init(void) { #ifdef SIGWINCH struct sigaction act; #endif settings_add_bool("lookandfeel", "colors", TRUE); settings_add_bool("lookandfeel", "term_force_colors", FALSE); settings_add_bool("lookandfeel", "term_auto_detach", FALSE); settings_add_bool("lookandfeel", "mirc_blink_fix", FALSE); force_colors = FALSE; term_use_colors = term_has_colors() && settings_get_bool("colors"); read_settings(); #if defined (HAVE_NL_LANGINFO) && defined(CODESET) if (strcmp(nl_langinfo(CODESET), "UTF-8") == 0) { term_type = TERM_TYPE_UTF8; term_set_input_type(TERM_TYPE_UTF8); } #endif signal_add("beep", (SIGNAL_FUNC) term_beep); signal_add("setup changed", (SIGNAL_FUNC) read_settings); command_bind("resize", NULL, (SIGNAL_FUNC) cmd_resize); command_bind("redraw", NULL, (SIGNAL_FUNC) cmd_redraw); #ifdef SIGWINCH sigemptyset (&act.sa_mask); act.sa_flags = 0; act.sa_handler = sig_winch; sigaction(SIGWINCH, &act, NULL); #endif }
void fe_ignore_init(void) { command_bind("ignore", NULL, (SIGNAL_FUNC) cmd_ignore); command_bind("unignore", NULL, (SIGNAL_FUNC) cmd_unignore); command_set_options("ignore", "regexp word except replies -pattern -channels"); }
void irc_dcc_init(void) { dcc_conns = NULL; dcc_timeouttag = g_timeout_add(1000, (GSourceFunc) dcc_timeout_func, NULL); settings_add_bool("dcc", "dcc_autorename", FALSE); settings_add_bool("dcc", "dcc_autoget", FALSE); settings_add_int("dcc", "dcc_max_autoget_size", 1000); settings_add_str("dcc", "dcc_download_path", "~"); settings_add_int("dcc", "dcc_file_create_mode", 644); settings_add_str("dcc", "dcc_autoget_masks", ""); settings_add_str("dcc", "dcc_autochat_masks", ""); settings_add_bool("dcc", "dcc_fast_send", TRUE); settings_add_str("dcc", "dcc_upload_path", "~"); settings_add_bool("dcc", "dcc_mirc_ctcp", FALSE); settings_add_bool("dcc", "dcc_autodisplay_dialog", TRUE); settings_add_int("dcc", "dcc_block_size", 2048); settings_add_int("dcc", "dcc_port", 0); settings_add_int("dcc", "dcc_timeout", 300); signal_add("server connected", (SIGNAL_FUNC) dcc_server_connected); signal_add("server disconnected", (SIGNAL_FUNC) dcc_server_disconnected); signal_add("ctcp reply dcc", (SIGNAL_FUNC) dcc_ctcp_reply); signal_add("ctcp msg dcc", (SIGNAL_FUNC) dcc_ctcp_msg); command_bind("dcc", NULL, (SIGNAL_FUNC) cmd_dcc); command_bind("dcc close", NULL, (SIGNAL_FUNC) cmd_dcc_close); signal_add("event 401", (SIGNAL_FUNC) event_no_such_nick); dcc_chat_init(); dcc_files_init(); }
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 python_init(void) { Py_InitializeEx(0); pysignals_init(); pystatusbar_init(); if (!pyloader_init() || !pymodule_init() || !factory_init() || !pythemes_init()) { printtext(NULL, NULL, MSGLEVEL_CLIENTERROR, "Failed to load Python"); return; } pyconstants_init(); /*PyImport_ImportModule("irssi_startup");*/ /* Install the custom output handlers, import hook and reload function */ /* XXX: handle import error */ PyRun_SimpleString( "import irssi_startup\n" ); pyloader_auto_load(); /* assert(signal(SIGINT, intr_catch) != SIG_ERR); */ command_bind("py", NULL, (SIGNAL_FUNC) cmd_default); command_bind("py load", NULL, (SIGNAL_FUNC) cmd_load); command_bind("py unload", NULL, (SIGNAL_FUNC) cmd_unload); command_bind("py list", NULL, (SIGNAL_FUNC) cmd_list); command_bind("py exec", NULL, (SIGNAL_FUNC) cmd_exec); module_register(MODULE_NAME, "core"); }
void fish_init(void) { char iniPasswordHash[50]; printtext(NULL, NULL, MSGLEVEL_CLIENTNOTICE, "FiSH " FISH_VERSION " - encryption module for irssi loaded!\n" "URL: https://github.com/falsovsky/FiSH-irssi\n" "Try /helpfish or /fishhelp for a short command overview"); command_bind("fishhelp", NULL, (SIGNAL_FUNC) cmd_helpfish); command_bind("helpfish", NULL, (SIGNAL_FUNC) cmd_helpfish); command_bind("fishlogin", NULL, (SIGNAL_FUNC) cmd_fishlogin); if (DH1080_Init() == FALSE) return; get_ini_password_hash(sizeof(iniPasswordHash), iniPasswordHash); if (strlen(iniPasswordHash) != 43) { strcpy(iniKey, default_iniKey); printtext(NULL, NULL, MSGLEVEL_CRAP, "\002FiSH:\002 Using default password to decrypt blow.ini... Try /setinipw to set a custom password."); setup_fish(); } else { printtext(NULL, NULL, MSGLEVEL_CRAP, "\002FiSH:\002 Current blow.ini is password protected."); cmd_fishlogin(NULL, NULL, NULL); } module_register("fish", "core"); }
void bans_init(void) { /* default bantype */ bantype = IRC_MASK_USER | IRC_MASK_DOMAIN; command_bind("bantype", NULL, (SIGNAL_FUNC) cmd_bantype); command_bind("ban", NULL, (SIGNAL_FUNC) cmd_ban); command_bind("unban", NULL, (SIGNAL_FUNC) cmd_unban); }
void fe_ircnet_init(void) { command_bind("ircnet", NULL, (SIGNAL_FUNC) cmd_ircnet); command_bind("ircnet add", NULL, (SIGNAL_FUNC) cmd_ircnet_add); command_bind("ircnet remove", NULL, (SIGNAL_FUNC) cmd_ircnet_remove); command_set_options("ircnet add", "-kicks -msgs -modes -whois -cmdspeed -cmdmax -nick -user -realname -host -autosendcmd"); }
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 irssi_perl_init(void) { command_bind("run", NULL, (SIGNAL_FUNC) cmd_run); command_bind("perlflush", NULL, (SIGNAL_FUNC) cmd_flush); signal_grabbed = siglast_grabbed = FALSE; irssi_perl_start(); irssi_perl_autorun(); }
void fe_modules_init(void) { signal_add("module error", (SIGNAL_FUNC) sig_module_error); signal_add("module loaded", (SIGNAL_FUNC) sig_module_loaded); signal_add("module unloaded", (SIGNAL_FUNC) sig_module_unloaded); command_bind("load", NULL, (SIGNAL_FUNC) cmd_load); command_bind("unload", NULL, (SIGNAL_FUNC) cmd_unload); }
void fe_ircnet_init(void) { command_bind("network", NULL, (SIGNAL_FUNC) cmd_network); command_bind("network list", NULL, (SIGNAL_FUNC) cmd_network_list); command_bind("network add", NULL, (SIGNAL_FUNC) cmd_network_add); command_bind("network remove", NULL, (SIGNAL_FUNC) cmd_network_remove); command_set_options("network add", "-kicks -msgs -modes -whois -cmdspeed -cmdmax -nick -user -realname -host -autosendcmd -querychans -usermode"); }
void dcc_files_init(void) { signal_add("ctcp msg dcc", (SIGNAL_FUNC) dcc_ctcp_msg); signal_add("setup changed", (SIGNAL_FUNC) read_settings); signal_add("irssi init finished", (SIGNAL_FUNC) read_settings); command_bind("dcc send", NULL, (SIGNAL_FUNC) cmd_dcc_send); command_bind("dcc get", NULL, (SIGNAL_FUNC) cmd_dcc_get); command_bind("dcc resume", NULL, (SIGNAL_FUNC) cmd_dcc_resume); }
void registration_init(void) { register_data = NULL; command_bind("xmppregister", NULL, (SIGNAL_FUNC)cmd_xmppregister); command_bind("xmppunregister", NULL, (SIGNAL_FUNC)cmd_xmppunregister); command_set_options("xmppunregister", "yes"); command_bind("xmpppasswd", NULL, (SIGNAL_FUNC)cmd_xmpppasswd); command_set_options("xmpppasswd", "yes"); disco_add_feature(XMLNS_REGISTRATION); }
void fe_ignore_init(void) { command_bind("ignore", NULL, (SIGNAL_FUNC) cmd_ignore); command_bind("unignore", NULL, (SIGNAL_FUNC) cmd_unignore); signal_add("ignore destroyed", (SIGNAL_FUNC) sig_ignore_destroyed); signal_add("ignore created", (SIGNAL_FUNC) sig_ignore_created); signal_add("ignore changed", (SIGNAL_FUNC) sig_ignore_created); command_set_options("ignore", "regexp full except replies -network -ircnet -time -pattern -channels"); }
void perl_core_init(void) { perl_scripts = NULL; command_bind("run", NULL, (SIGNAL_FUNC) cmd_run); command_bind_first("unload", NULL, (SIGNAL_FUNC) cmd_unload); command_bind("perl", NULL, (SIGNAL_FUNC) cmd_perl); command_bind("perlflush", NULL, (SIGNAL_FUNC) cmd_perlflush); PL_perl_destruct_level = 1; perl_signals_init(); irssi_perl_start(); irssi_perl_autorun(); }
void modes_init(void) { signal_add("event 221", (SIGNAL_FUNC) event_user_mode); signal_add("event 305", (SIGNAL_FUNC) event_unaway); signal_add("event 306", (SIGNAL_FUNC) event_away); signal_add("event mode", (SIGNAL_FUNC) event_mode); command_bind("op", NULL, (SIGNAL_FUNC) cmd_op); command_bind("deop", NULL, (SIGNAL_FUNC) cmd_deop); command_bind("voice", NULL, (SIGNAL_FUNC) cmd_voice); command_bind("devoice", NULL, (SIGNAL_FUNC) cmd_devoice); command_bind("mode", NULL, (SIGNAL_FUNC) cmd_mode); }
void fe_channels_init(void) { settings_add_bool("lookandfeel", "autoclose_windows", TRUE); settings_add_bool("lookandfeel", "show_names_on_join", TRUE); settings_add_int("lookandfeel", "names_max_columns", 6); settings_add_int("lookandfeel", "names_max_width", 0); signal_add("channel created", (SIGNAL_FUNC) signal_channel_created); signal_add("channel destroyed", (SIGNAL_FUNC) signal_channel_destroyed); signal_add_last("window item changed", (SIGNAL_FUNC) signal_window_item_changed); signal_add_last("server disconnected", (SIGNAL_FUNC) sig_disconnected); signal_add_last("channel joined", (SIGNAL_FUNC) sig_channel_joined); command_bind("join", NULL, (SIGNAL_FUNC) cmd_join); command_bind("channel", NULL, (SIGNAL_FUNC) cmd_channel); command_bind("channel add", NULL, (SIGNAL_FUNC) cmd_channel_add); command_bind("channel modify", NULL, (SIGNAL_FUNC) cmd_channel_modify); command_bind("channel remove", NULL, (SIGNAL_FUNC) cmd_channel_remove); command_bind("channel list", NULL, (SIGNAL_FUNC) cmd_channel_list); command_bind("names", NULL, (SIGNAL_FUNC) cmd_names); command_bind("cycle", NULL, (SIGNAL_FUNC) cmd_cycle); command_set_options("channel add", "auto noauto -bots -botcmd"); command_set_options("channel modify", "auto noauto -bots -botcmd"); command_set_options("names", "count ops halfops voices normal"); command_set_options("join", "invite 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 rawlog_init(void) { signal_rawlog = signal_get_uniq_id("rawlog"); settings_add_int("history", "rawlog_lines", 200); read_settings(); signal_add("setup changed", (SIGNAL_FUNC) read_settings); command_bind("rawlog", NULL, (SIGNAL_FUNC) cmd_rawlog); command_bind("rawlog save", NULL, (SIGNAL_FUNC) cmd_rawlog_save); command_bind("rawlog open", NULL, (SIGNAL_FUNC) cmd_rawlog_open); command_bind("rawlog close", NULL, (SIGNAL_FUNC) cmd_rawlog_close); }
void fe_irc_server_init(void) { signal_add("server add fill", (SIGNAL_FUNC) sig_server_add_fill); command_bind("server list", NULL, (SIGNAL_FUNC) cmd_server_list); command_set_options("server add", "-ircnet -network -cmdspeed -cmdmax -querychans"); }
void modes_init(void) { settings_add_str("misc", "opermode", ""); signal_add("event 221", (SIGNAL_FUNC) event_user_mode); signal_add("event 305", (SIGNAL_FUNC) event_unaway); signal_add("event 306", (SIGNAL_FUNC) event_away); signal_add("event 381", (SIGNAL_FUNC) event_oper); signal_add("event mode", (SIGNAL_FUNC) event_mode); command_bind("op", NULL, (SIGNAL_FUNC) cmd_op); command_bind("deop", NULL, (SIGNAL_FUNC) cmd_deop); command_bind("voice", NULL, (SIGNAL_FUNC) cmd_voice); command_bind("devoice", NULL, (SIGNAL_FUNC) cmd_devoice); command_bind("mode", NULL, (SIGNAL_FUNC) cmd_mode); }
void keyboard_init(void) { keys = g_hash_table_new((GHashFunc) g_str_hash, (GCompareFunc) g_str_equal); default_keys = g_hash_table_new((GHashFunc) g_str_hash, (GCompareFunc) g_str_equal); keyinfos = NULL; key_states = g_tree_new((GCompareFunc) g_strcmp0); key_config_frozen = 0; memset(used_keys, 0, sizeof(used_keys)); settings_add_int("misc", "key_timeout", 0); key_bind("command", "Run any command", NULL, NULL, (SIGNAL_FUNC) sig_command); key_bind("key", "Specify name for key binding", NULL, NULL, (SIGNAL_FUNC) sig_key); key_bind("multi", "Run multiple commands", NULL, NULL, (SIGNAL_FUNC) sig_multi); key_bind("nothing", "Do nothing", NULL, NULL, (SIGNAL_FUNC) sig_nothing); /* read the keyboard config when all key binds are known */ signal_add("irssi init read settings", (SIGNAL_FUNC) read_keyboard_config); signal_add("setup reread", (SIGNAL_FUNC) read_keyboard_config); signal_add("complete command bind", (SIGNAL_FUNC) sig_complete_bind); command_bind("bind", NULL, (SIGNAL_FUNC) cmd_bind); command_set_options("bind", "delete list"); }
void servers_reconnect_init(void) { reconnects = NULL; last_reconnect_tag = 0; reconnect_timeout_tag = g_timeout_add(1000, (GSourceFunc) server_reconnect_timeout, NULL); read_settings(); signal_add("server looking", (SIGNAL_FUNC) sig_server_looking); signal_add("server connect failed", (SIGNAL_FUNC) sig_reconnect); signal_add("server disconnected", (SIGNAL_FUNC) sig_reconnect); signal_add("event connected", (SIGNAL_FUNC) sig_connected); command_bind("rmreconns", NULL, (SIGNAL_FUNC) cmd_rmreconns); command_bind("reconnect", NULL, (SIGNAL_FUNC) cmd_reconnect); command_bind("disconnect", NULL, (SIGNAL_FUNC) cmd_disconnect); signal_add("setup changed", (SIGNAL_FUNC) read_settings); }
void fe_irc_server_init(void) { signal_add("server add create", (SIGNAL_FUNC) sig_server_add_create); signal_add("server add fill", (SIGNAL_FUNC) sig_server_add_fill); command_bind("server list", NULL, (SIGNAL_FUNC) cmd_server_list); command_set_options("server add", "-ircnet"); }
void fe_irc_dcc_init(void) { fe_dcc_chat_init(); fe_dcc_get_init(); fe_dcc_send_init(); signal_add("dcc request", (SIGNAL_FUNC) dcc_request); signal_add("dcc rejected", (SIGNAL_FUNC) dcc_rejected); signal_add("dcc request send", (SIGNAL_FUNC) dcc_request_send); signal_add("dcc error connect", (SIGNAL_FUNC) dcc_error_connect); signal_add("dcc error unknown type", (SIGNAL_FUNC) dcc_error_unknown_type); command_bind("dcc", NULL, (SIGNAL_FUNC) cmd_dcc); command_bind("dcc list", NULL, (SIGNAL_FUNC) cmd_dcc_list); theme_register(fecommon_irc_dcc_formats); module_register("dcc", "fe-irc"); }
void fe_server_init(void) { command_bind("server", NULL, (SIGNAL_FUNC) cmd_server); command_bind("server add", NULL, (SIGNAL_FUNC) cmd_server_add); command_bind("server remove", NULL, (SIGNAL_FUNC) cmd_server_remove); command_set_options("server add", "auto noauto -host -cmdspeed -cmdmax -port"); signal_add("server looking", (SIGNAL_FUNC) sig_server_looking); signal_add("server connecting", (SIGNAL_FUNC) sig_server_connecting); signal_add("server connected", (SIGNAL_FUNC) sig_server_connected); signal_add("server connect failed", (SIGNAL_FUNC) sig_connect_failed); signal_add("server disconnected", (SIGNAL_FUNC) sig_server_disconnected); signal_add("server quit", (SIGNAL_FUNC) sig_server_quit); signal_add("server lag disconnect", (SIGNAL_FUNC) sig_server_lag_disconnected); signal_add("server reconnect remove", (SIGNAL_FUNC) sig_server_reconnect_removed); signal_add("server reconnect not found", (SIGNAL_FUNC) sig_server_reconnect_not_found); }
void fe_core_commands_init(void) { hide_output = FALSE; command_cmd = FALSE; memset(&time_command_now, 0, sizeof(GTimeVal)); command_bind("help", NULL, (SIGNAL_FUNC) cmd_help); command_bind("echo", NULL, (SIGNAL_FUNC) cmd_echo); command_bind("version", NULL, (SIGNAL_FUNC) cmd_version); command_bind("cat", NULL, (SIGNAL_FUNC) cmd_cat); command_bind("beep", NULL, (SIGNAL_FUNC) cmd_beep); signal_add("send command", (SIGNAL_FUNC) event_command); signal_add_last("send command", (SIGNAL_FUNC) event_command_last); signal_add("default command", (SIGNAL_FUNC) event_default_command); signal_add("error command", (SIGNAL_FUNC) event_cmderror); }