summaryrefslogtreecommitdiffstats
path: root/src/config/config-request.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/config-request.h')
-rw-r--r--src/config/config-request.h61
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