void trigger_free (struct t_trigger *trigger) { int i; if (!trigger) return; /* remove trigger from triggers list */ if (trigger->prev_trigger) (trigger->prev_trigger)->next_trigger = trigger->next_trigger; if (trigger->next_trigger) (trigger->next_trigger)->prev_trigger = trigger->prev_trigger; if (triggers == trigger) triggers = trigger->next_trigger; if (last_trigger == trigger) last_trigger = trigger->prev_trigger; /* free data */ trigger_unhook (trigger); trigger_regex_free (&trigger->regex_count, &trigger->regex); if (trigger->name) free (trigger->name); for (i = 0; i < TRIGGER_NUM_OPTIONS; i++) { if (trigger->options[i]) weechat_config_option_free (trigger->options[i]); } if (trigger->commands) weechat_string_free_split (trigger->commands); free (trigger); triggers_count--; }
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; }
struct t_trigger * trigger_new (const char *name, const char *enabled, const char *hook, const char *arguments, const char *conditions, const char *regex, const char *command, const char *return_code, const char *post_action) { struct t_config_option *option[TRIGGER_NUM_OPTIONS]; const char *value[TRIGGER_NUM_OPTIONS]; struct t_trigger *new_trigger; int i; /* look for type */ if (trigger_search_hook_type (hook) < 0) return NULL; /* look for return code */ if (return_code && return_code[0] && (trigger_search_return_code (return_code) < 0)) { return NULL; } /* look for post action */ if (post_action && post_action[0] && (trigger_search_post_action (post_action) < 0)) { return NULL; } value[TRIGGER_OPTION_ENABLED] = enabled; value[TRIGGER_OPTION_HOOK] = hook; value[TRIGGER_OPTION_ARGUMENTS] = arguments; value[TRIGGER_OPTION_CONDITIONS] = conditions; value[TRIGGER_OPTION_REGEX] = regex; value[TRIGGER_OPTION_COMMAND] = command; value[TRIGGER_OPTION_RETURN_CODE] = return_code; value[TRIGGER_OPTION_POST_ACTION] = post_action; for (i = 0; i < TRIGGER_NUM_OPTIONS; i++) { option[i] = trigger_config_create_trigger_option (name, i, value[i]); } new_trigger = trigger_new_with_options (name, option); if (!new_trigger) { for (i = 0; i < TRIGGER_NUM_OPTIONS; i++) { weechat_config_option_free (option[i]); } } return new_trigger; }
void trigger_config_use_temp_triggers () { struct t_trigger *ptr_temp_trigger, *next_temp_trigger; int i, num_options_ok; for (ptr_temp_trigger = triggers_temp; ptr_temp_trigger; ptr_temp_trigger = ptr_temp_trigger->next_trigger) { num_options_ok = 0; for (i = 0; i < TRIGGER_NUM_OPTIONS; i++) { if (!ptr_temp_trigger->options[i]) { ptr_temp_trigger->options[i] = trigger_config_create_trigger_option (ptr_temp_trigger->name, i, trigger_option_default[i]); } if (ptr_temp_trigger->options[i]) num_options_ok++; } if (num_options_ok == TRIGGER_NUM_OPTIONS) { trigger_new_with_options (ptr_temp_trigger->name, ptr_temp_trigger->options); } else { for (i = 0; i < TRIGGER_NUM_OPTIONS; i++) { if (ptr_temp_trigger->options[i]) { weechat_config_option_free (ptr_temp_trigger->options[i]); ptr_temp_trigger->options[i] = NULL; } } } } /* free all temporary triggers */ while (triggers_temp) { next_temp_trigger = triggers_temp->next_trigger; if (triggers_temp->name) free (triggers_temp->name); free (triggers_temp); triggers_temp = next_temp_trigger; } last_trigger_temp = NULL; }
int charset_config_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", NULL, NULL, 0, 0, "", value, 0, NULL, 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 (rc == WEECHAT_CONFIG_OPTION_SET_ERROR) { weechat_printf (NULL, _("%s%s: error creating charset \"%s\" => \"%s\""), weechat_prefix ("error"), CHARSET_PLUGIN_NAME, option_name, value); } return rc; }
int weechat_aspell_config_dict_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); weechat_aspell_create_spellers (weechat_current_buffer ()); return WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED; }
int logger_config_mask_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_adjust_log_filenames (); return WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED; }
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_aspell_config_option_delete_option (const void *pointer, void *data, struct t_config_file *config_file, struct t_config_section *section, struct t_config_option *option) { /* make C compiler happy */ (void) pointer; (void) data; (void) config_file; (void) section; weechat_config_option_free (option); weechat_hashtable_remove_all (weechat_aspell_speller_buffer); if (!weechat_aspell_config_loading) weechat_aspell_speller_remove_unused (); return WEECHAT_CONFIG_OPTION_UNSET_OK_REMOVED; }
void alias_config_cmd_delete_cb (void *data, struct t_config_option *option) { struct t_config_option *ptr_option_completion; struct t_alias *ptr_alias; /* make C compiler happy */ (void) data; ptr_option_completion = weechat_config_search_option (alias_config_file, alias_config_section_completion, weechat_config_option_get_pointer (option, "name")); ptr_alias = alias_search (weechat_config_option_get_pointer (option, "name")); if (ptr_alias) alias_free (ptr_alias); if (ptr_option_completion) weechat_config_option_free (ptr_option_completion); }
int weechat_aspell_config_dict_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 (value && value[0]) weechat_aspell_speller_check_dictionaries (value); 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", _("comma separated list of dictionaries to use on this buffer"), NULL, 0, 0, "", value, 0, NULL, NULL, &weechat_aspell_config_dict_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 (rc == WEECHAT_CONFIG_OPTION_SET_ERROR) { weechat_printf (NULL, _("%s%s: error creating aspell dictionary \"%s\" => \"%s\""), weechat_prefix ("error"), ASPELL_PLUGIN_NAME, option_name, value); } else weechat_aspell_create_spellers (weechat_current_buffer ()); return rc; }
int weechat_aspell_config_option_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, "string", _("option for aspell (for list of available options and " "format, run command \"aspell config\" in a shell)"), NULL, 0, 0, "", value, 0, NULL, NULL, NULL, &weechat_aspell_config_option_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 (rc == WEECHAT_CONFIG_OPTION_SET_ERROR) { weechat_printf (NULL, _("%s%s: error creating aspell option \"%s\" => \"%s\""), weechat_prefix ("error"), ASPELL_PLUGIN_NAME, option_name, value); } else { weechat_hashtable_remove_all (weechat_aspell_speller_buffer); if (!weechat_aspell_config_loading) weechat_aspell_speller_remove_unused (); } return rc; }
int relay_command_relay (void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { struct t_relay_server *ptr_server; struct t_config_option *ptr_option; int port; /* make C compiler happy */ (void) data; (void) buffer; if (argc > 1) { if (weechat_strcasecmp (argv[1], "list") == 0) { relay_command_client_list (0); return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "listfull") == 0) { relay_command_client_list (1); return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "listrelay") == 0) { relay_command_server_list (); return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "add") == 0) { if (argc >= 4) { if (relay_config_create_option_port (NULL, relay_config_file, relay_config_section_port, argv[2], argv_eol[3]) != WEECHAT_CONFIG_OPTION_SET_ERROR) { weechat_printf (NULL, _("%s: relay \"%s\" (port %s) added"), RELAY_PLUGIN_NAME, argv[2], argv_eol[3]); } } else { weechat_printf (NULL, _("%s%s: missing arguments for \"%s\" " "command"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, "relay add"); } return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "del") == 0) { if (argc >= 3) { ptr_server = relay_server_search (argv_eol[2]); if (ptr_server) { port = ptr_server->port; relay_server_free (ptr_server); ptr_option = weechat_config_search_option (relay_config_file, relay_config_section_port, argv_eol[2]); if (ptr_option) weechat_config_option_free (ptr_option); weechat_printf (NULL, _("%s: relay \"%s\" (port %d) removed"), RELAY_PLUGIN_NAME, argv[2], port); } else { weechat_printf (NULL, _("%s%s: relay \"%s\" not found"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, argv_eol[2]); } } else { weechat_printf (NULL, _("%s%s: missing arguments for \"%s\" " "command"), weechat_prefix ("error"), RELAY_PLUGIN_NAME, "relay del"); } return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "raw") == 0) { relay_raw_open (1); return WEECHAT_RC_OK; } if (weechat_strcasecmp (argv[1], "sslcertkey") == 0) { relay_network_set_ssl_cert_key (1); return WEECHAT_RC_OK; } } if (!relay_buffer) relay_buffer_open (); if (relay_buffer) { weechat_buffer_set (relay_buffer, "display", "1"); if (argc > 1) { if (strcmp (argv[1], "up") == 0) { if (relay_buffer_selected_line > 0) relay_buffer_selected_line--; } else if (strcmp (argv[1], "down") == 0) { if (relay_buffer_selected_line < relay_client_count - 1) relay_buffer_selected_line++; } } } relay_buffer_refresh (NULL); return WEECHAT_RC_OK; }