int logger_config_mask_create_option (void *data, struct t_config_file *config_file, struct t_config_section *section, const char *option_name, const char *value) { struct t_config_option *ptr_option; int rc; /* make C compiler happy */ (void) data; rc = WEECHAT_CONFIG_OPTION_SET_ERROR; if (option_name) { ptr_option = weechat_config_search_option (config_file, section, option_name); if (ptr_option) { if (value && value[0]) rc = weechat_config_option_set (ptr_option, value, 1); else { weechat_config_option_free (ptr_option); rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } else { if (value && value[0]) { ptr_option = weechat_config_new_option ( config_file, section, option_name, "string", _("file mask for log file; local buffer variables are " "permitted"), NULL, 0, 0, "", value, 0, NULL, NULL, &logger_config_mask_change, NULL, NULL, NULL); rc = (ptr_option) ? WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE : WEECHAT_CONFIG_OPTION_SET_ERROR; } else rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } if (!logger_config_loading) { logger_stop_all (); logger_start_buffer_all (); } return rc; }
int logger_config_level_create_option (const void *pointer, void *data, struct t_config_file *config_file, struct t_config_section *section, const char *option_name, const char *value) { struct t_config_option *ptr_option; int rc; /* make C compiler happy */ (void) pointer; (void) data; rc = WEECHAT_CONFIG_OPTION_SET_ERROR; if (option_name) { ptr_option = weechat_config_search_option (config_file, section, option_name); if (ptr_option) { if (value && value[0]) rc = weechat_config_option_set (ptr_option, value, 1); else { weechat_config_option_free (ptr_option); rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } else { if (value && value[0]) { ptr_option = weechat_config_new_option ( config_file, section, option_name, "integer", _("logging level for this buffer (0 = logging disabled, " "1 = a few messages (most important) .. 9 = all messages)"), NULL, 0, 9, "9", value, 0, NULL, NULL, NULL, &logger_config_level_change, NULL, NULL, NULL, NULL, NULL); rc = (ptr_option) ? WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE : WEECHAT_CONFIG_OPTION_SET_ERROR; } else rc = WEECHAT_CONFIG_OPTION_SET_OK_SAME_VALUE; } } if (!logger_config_loading) logger_start_buffer_all (1); return rc; }
void logger_config_level_change (void *data, struct t_config_option *option) { /* make C compiler happy */ (void) data; (void) option; if (!logger_config_loading) logger_start_buffer_all (1); }
void logger_config_change_file_option_restart_log (void *data, struct t_config_option *option) { /* make C compiler happy */ (void) data; (void) option; if (!logger_config_loading) { logger_stop_all (); logger_start_buffer_all (); } }
int logger_config_level_delete_option (void *data, struct t_config_file *config_file, struct t_config_section *section, struct t_config_option *option) { /* make C compiler happy */ (void) data; (void) config_file; (void) section; weechat_config_option_free (option); logger_start_buffer_all (1); return WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED; }
int weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) { /* make C compiler happy */ (void) argc; (void) argv; weechat_plugin = plugin; if (!logger_config_init ()) return WEECHAT_RC_ERROR; logger_config_read (); /* command /logger */ weechat_hook_command ( "logger", N_("logger plugin configuration"), N_("list" " || set <level>" " || flush" " || disable"), N_(" list: show logging status for opened buffers\n" " set: set logging level on current buffer\n" " level: level for messages to be logged (0 = logging disabled, " "1 = a few messages (most important) .. 9 = all messages)\n" " flush: write all log files now\n" "disable: disable logging on current buffer (set level to 0)\n" "\n" "Options \"logger.level.*\" and \"logger.mask.*\" can be used to set " "level or mask for a buffer, or buffers beginning with name.\n" "\n" "Log levels used by IRC plugin:\n" " 1: user message, notice, private\n" " 2: nick change\n" " 3: server message\n" " 4: join/part/quit\n" " 9: all other messages\n" "\n" "Examples:\n" " set level to 5 for current buffer:\n" " /logger set 5\n" " disable logging for current buffer:\n" " /logger disable\n" " set level to 3 for all IRC buffers:\n" " /set logger.level.irc 3\n" " disable logging for main WeeChat buffer:\n" " /set logger.level.core.weechat 0\n" " use a directory per IRC server and a file per channel inside:\n" " /set logger.mask.irc \"$server/$channel.weechatlog\""), "list" " || set 1|2|3|4|5|6|7|8|9" " || flush" " || disable", &logger_command_cb, NULL); logger_start_buffer_all (1); weechat_hook_signal ("buffer_opened", &logger_buffer_opened_signal_cb, NULL); weechat_hook_signal ("buffer_closing", &logger_buffer_closing_signal_cb, NULL); weechat_hook_signal ("buffer_renamed", &logger_buffer_renamed_signal_cb, NULL); weechat_hook_signal ("logger_backlog", &logger_backlog_signal_cb, NULL); weechat_hook_signal ("logger_start", &logger_start_signal_cb, NULL); weechat_hook_signal ("logger_stop", &logger_stop_signal_cb, NULL); weechat_hook_signal ("day_changed", &logger_day_changed_signal_cb, NULL); weechat_hook_print (NULL, NULL, NULL, 1, &logger_print_cb, NULL); logger_info_init (); return WEECHAT_RC_OK; }