X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=src%2Fappconfig.h;h=45cc8cfd5215d18303abbb407091a58998db3379;hb=8679670bdbe3c5928ec2e266d9c72e1a758fdf37;hp=08aae8348891c08fda9298a9a68046b50a59b973;hpb=b69723411bc73bbee640a760fa2267ec29f4d69e;p=netdata.git diff --git a/src/appconfig.h b/src/appconfig.h index 08aae834..45cc8cfd 100644 --- a/src/appconfig.h +++ b/src/appconfig.h @@ -3,30 +3,67 @@ #define CONFIG_FILENAME "netdata.conf" +#define CONFIG_SECTION_GLOBAL "global" +#define CONFIG_SECTION_WEB "web" +#define CONFIG_SECTION_PLUGINS "plugins" +#define CONFIG_SECTION_REGISTRY "registry" +#define CONFIG_SECTION_HEALTH "health" +#define CONFIG_SECTION_BACKEND "backend" +#define CONFIG_SECTION_STREAM "stream" + // these are used to limit the configuration names and values lengths // they are not enforced by config.c functions (they will strdup() all strings, no matter of their length) #define CONFIG_MAX_NAME 1024 #define CONFIG_MAX_VALUE 2048 -extern int load_config(char *filename, int overwrite_used); +struct config { + struct section *sections; + netdata_mutex_t mutex; + avl_tree_lock index; +}; + +extern struct config + netdata_config, + stream_config; + +#define CONFIG_BOOLEAN_NO 0 +#define CONFIG_BOOLEAN_YES 1 +#define CONFIG_BOOLEAN_AUTO 2 + +extern int appconfig_load(struct config *root, char *filename, int overwrite_used); + +extern char *appconfig_get(struct config *root, const char *section, const char *name, const char *default_value); +extern long long appconfig_get_number(struct config *root, const char *section, const char *name, long long value); +extern int appconfig_get_boolean(struct config *root, const char *section, const char *name, int value); +extern int appconfig_get_boolean_ondemand(struct config *root, const char *section, const char *name, int value); + +extern const char *appconfig_set(struct config *root, const char *section, const char *name, const char *value); +extern const char *appconfig_set_default(struct config *root, const char *section, const char *name, const char *value); +extern long long appconfig_set_number(struct config *root, const char *section, const char *name, long long value); +extern int appconfig_set_boolean(struct config *root, const char *section, const char *name, int value); + +extern int appconfig_exists(struct config *root, const char *section, const char *name); +extern int appconfig_move(struct config *root, const char *section_old, const char *name_old, const char *section_new, const char *name_new); + +extern void appconfig_generate(struct config *root, BUFFER *wb, int only_changed); -extern char *config_get(const char *section, const char *name, const char *default_value); -extern long long config_get_number(const char *section, const char *name, long long value); -extern int config_get_boolean(const char *section, const char *name, int value); +// ---------------------------------------------------------------------------- +// shortcuts for the default netdata configuration -#define CONFIG_ONDEMAND_NO 0 -#define CONFIG_ONDEMAND_YES 1 -#define CONFIG_ONDEMAND_ONDEMAND 2 -extern int config_get_boolean_ondemand(const char *section, const char *name, int value); +#define config_load(filename, overwrite_used) appconfig_load(&netdata_config, filename, overwrite_used) +#define config_get(section, name, default_value) appconfig_get(&netdata_config, section, name, default_value) +#define config_get_number(section, name, value) appconfig_get_number(&netdata_config, section, name, value) +#define config_get_boolean(section, name, value) appconfig_get_boolean(&netdata_config, section, name, value) +#define config_get_boolean_ondemand(section, name, value) appconfig_get_boolean_ondemand(&netdata_config, section, name, value) -extern const char *config_set(const char *section, const char *name, const char *value); -extern const char *config_set_default(const char *section, const char *name, const char *value); -extern long long config_set_number(const char *section, const char *name, long long value); -extern int config_set_boolean(const char *section, const char *name, int value); +#define config_set(section, name, default_value) appconfig_get(&netdata_config, section, name, default_value) +#define config_set_default(section, name, value) appconfig_set_default(&netdata_config, section, name, value) +#define config_set_number(section, name, value) appconfig_set_number(&netdata_config, section, name, value) +#define config_set_boolean(section, name, value) appconfig_set_boolean(&netdata_config, section, name, value) -extern int config_exists(const char *section, const char *name); -extern int config_rename(const char *section, const char *old, const char *new); +#define config_exists(section, name) appconfig_exists(&netdata_config, section, name) +#define config_move(section_old, name_old, section_new, name_new) appconfig_move(&netdata_config, section_old, name_old, section_new, name_new) -extern void generate_config(BUFFER *wb, int only_changed); +#define config_generate(buffer, only_changed) appconfig_generate(&netdata_config, buffer, only_changed) #endif /* NETDATA_CONFIG_H */