diff options
Diffstat (limited to 'src/config/config-request.h')
-rw-r--r-- | src/config/config-request.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/config/config-request.h b/src/config/config-request.h new file mode 100644 index 0000000..c91e836 --- /dev/null +++ b/src/config/config-request.h @@ -0,0 +1,61 @@ +#ifndef CONFIG_REQUEST_H +#define CONFIG_REQUEST_H + +#include "settings-parser.h" +#include "config-filter.h" + +struct master_service_settings_output; + +enum config_dump_scope { + /* Dump all settings, including hidden settings */ + CONFIG_DUMP_SCOPE_ALL_WITH_HIDDEN, + /* Dump all non-hidden settings */ + CONFIG_DUMP_SCOPE_ALL_WITHOUT_HIDDEN, + /* Dump all that have explicitly been set */ + CONFIG_DUMP_SCOPE_SET, + /* Dump only settings that differ from defaults */ + CONFIG_DUMP_SCOPE_CHANGED +}; + +enum config_dump_flags { + CONFIG_DUMP_FLAG_CHECK_SETTINGS = 0x01, + CONFIG_DUMP_FLAG_HIDE_LIST_DEFAULTS = 0x02, + /* Errors are reported using callback and they don't stop handling */ + CONFIG_DUMP_FLAG_CALLBACK_ERRORS = 0x04, + /* Set if dumping a section and not top level config */ + CONFIG_DUMP_FLAG_IN_SECTION = 0x08, +}; + +enum config_key_type { + CONFIG_KEY_NORMAL, + CONFIG_KEY_LIST, + CONFIG_KEY_UNIQUE_KEY, + /* error message is in value */ + CONFIG_KEY_ERROR +}; + +typedef void config_request_callback_t(const char *key, const char *value, + enum config_key_type type, void *context); + +bool config_export_type(string_t *str, const void *value, + const void *default_value, + enum setting_type type, bool dump_default, + bool *dump_r) ATTR_NULL(3); +struct config_export_context * +config_export_init(const char *const *modules, + const char *const *exclude_settings, + enum config_dump_scope scope, + enum config_dump_flags flags, + config_request_callback_t *callback, void *context) + ATTR_NULL(1, 5); +void config_export_by_filter(struct config_export_context *ctx, + const struct config_filter *filter); +void config_export_parsers(struct config_export_context *ctx, + const struct config_module_parser *parsers); +void config_export_get_output(struct config_export_context *ctx, + struct master_service_settings_output *output_r); +const char * +config_export_get_import_environment(struct config_export_context *ctx); +int config_export_finish(struct config_export_context **ctx); + +#endif |