diff options
Diffstat (limited to 'src/core/wee-config-file.c')
-rw-r--r-- | src/core/wee-config-file.c | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/src/core/wee-config-file.c b/src/core/wee-config-file.c index 99fcb85ad..f9a5b4d88 100644 --- a/src/core/wee-config-file.c +++ b/src/core/wee-config-file.c @@ -27,6 +27,7 @@ #endif #include <stdlib.h> +#include <stddef.h> #include <unistd.h> #include <stdarg.h> #include <string.h> @@ -34,6 +35,7 @@ #include "weechat.h" #include "wee-config-file.h" +#include "wee-hdata.h" #include "wee-hook.h" #include "wee-infolist.h" #include "wee-log.h" @@ -51,6 +53,10 @@ char *config_option_type_string[CONFIG_NUM_OPTION_TYPES] = char *config_boolean_true[] = { "on", "yes", "y", "true", "t", "1", NULL }; char *config_boolean_false[] = { "off", "no", "n", "false", "f", "0", NULL }; +struct t_hdata *config_file_hdata_config_file = NULL; +struct t_hdata *config_file_hdata_config_section = NULL; +struct t_hdata *config_file_hdata_config_option = NULL; + void config_file_option_free_data (struct t_config_option *option); @@ -2544,6 +2550,125 @@ config_file_free_all_plugin (struct t_weechat_plugin *plugin) } /* + * config_file_hdata_config_file_cb: return hdata for config_file + */ + +struct t_hdata * +config_file_hdata_config_file_cb (void *data, const char *hdata_name) +{ + struct t_hdata *hdata; + + /* make C compiler happy */ + (void) data; + + if (config_file_hdata_config_file) + return config_file_hdata_config_file; + + hdata = hdata_new (hdata_name, "prev_config", "next_config"); + if (hdata) + { + config_file_hdata_config_file = hdata; + HDATA_VAR(struct t_config_file, plugin, POINTER); + HDATA_VAR(struct t_config_file, name, STRING); + HDATA_VAR(struct t_config_file, filename, STRING); + HDATA_VAR(struct t_config_file, file, POINTER); + HDATA_VAR(struct t_config_file, callback_reload, POINTER); + HDATA_VAR(struct t_config_file, callback_reload_data, POINTER); + HDATA_VAR(struct t_config_file, sections, POINTER); + HDATA_VAR(struct t_config_file, last_section, POINTER); + HDATA_VAR(struct t_config_file, prev_config, POINTER); + HDATA_VAR(struct t_config_file, next_config, POINTER); + HDATA_LIST(config_files); + HDATA_LIST(last_config_file); + } + return config_file_hdata_config_file; +} + +/* + * config_file_hdata_config_section_cb: return hdata for config_section + */ + +struct t_hdata * +config_file_hdata_config_section_cb (void *data, const char *hdata_name) +{ + struct t_hdata *hdata; + + /* make C compiler happy */ + (void) data; + + if (config_file_hdata_config_section) + return config_file_hdata_config_section; + + hdata = hdata_new (hdata_name, "prev_section", "next_section"); + if (hdata) + { + config_file_hdata_config_section = hdata; + HDATA_VAR(struct t_config_section, config_file, POINTER); + HDATA_VAR(struct t_config_section, name, STRING); + HDATA_VAR(struct t_config_section, user_can_add_options, INTEGER); + HDATA_VAR(struct t_config_section, user_can_delete_options, INTEGER); + HDATA_VAR(struct t_config_section, callback_read, POINTER); + HDATA_VAR(struct t_config_section, callback_read_data, POINTER); + HDATA_VAR(struct t_config_section, callback_write, POINTER); + HDATA_VAR(struct t_config_section, callback_write_data, POINTER); + HDATA_VAR(struct t_config_section, callback_write_default, POINTER); + HDATA_VAR(struct t_config_section, callback_write_default_data, POINTER); + HDATA_VAR(struct t_config_section, callback_create_option, POINTER); + HDATA_VAR(struct t_config_section, callback_create_option_data, POINTER); + HDATA_VAR(struct t_config_section, callback_delete_option, POINTER); + HDATA_VAR(struct t_config_section, callback_delete_option_data, POINTER); + HDATA_VAR(struct t_config_section, options, POINTER); + HDATA_VAR(struct t_config_section, last_option, POINTER); + HDATA_VAR(struct t_config_section, prev_section, POINTER); + HDATA_VAR(struct t_config_section, next_section, POINTER); + } + return config_file_hdata_config_section; +} + +/* + * config_file_hdata_config_option_cb: return hdata for config_option + */ + +struct t_hdata * +config_file_hdata_config_option_cb (void *data, const char *hdata_name) +{ + struct t_hdata *hdata; + + /* make C compiler happy */ + (void) data; + + if (config_file_hdata_config_option) + return config_file_hdata_config_option; + + hdata = hdata_new (hdata_name, "prev_option", "next_option"); + if (hdata) + { + config_file_hdata_config_option = hdata; + HDATA_VAR(struct t_config_option, config_file, POINTER); + HDATA_VAR(struct t_config_option, section, POINTER); + HDATA_VAR(struct t_config_option, name, STRING); + HDATA_VAR(struct t_config_option, type, INTEGER); + HDATA_VAR(struct t_config_option, description, STRING); + HDATA_VAR(struct t_config_option, string_values, POINTER); + HDATA_VAR(struct t_config_option, min, INTEGER); + HDATA_VAR(struct t_config_option, max, INTEGER); + HDATA_VAR(struct t_config_option, default_value, POINTER); + HDATA_VAR(struct t_config_option, value, POINTER); + HDATA_VAR(struct t_config_option, null_value_allowed, INTEGER); + HDATA_VAR(struct t_config_option, callback_check_value, POINTER); + HDATA_VAR(struct t_config_option, callback_check_value_data, POINTER); + HDATA_VAR(struct t_config_option, callback_change, POINTER); + HDATA_VAR(struct t_config_option, callback_change_data, POINTER); + HDATA_VAR(struct t_config_option, callback_delete, POINTER); + HDATA_VAR(struct t_config_option, callback_delete_data, POINTER); + HDATA_VAR(struct t_config_option, loaded, INTEGER); + HDATA_VAR(struct t_config_option, prev_option, POINTER); + HDATA_VAR(struct t_config_option, next_option, POINTER); + } + return config_file_hdata_config_option; +} + +/* * config_file_add_to_infolist: add configuration options in an infolist * return 1 if ok, 0 if error */ |