]> arthur.barton.de Git - netdata.git/blob - src/appconfig.h
appconfig now supports different multiple configurations - added support for stream...
[netdata.git] / src / appconfig.h
1 #ifndef NETDATA_CONFIG_H
2 #define NETDATA_CONFIG_H 1
3
4 #define CONFIG_FILENAME "netdata.conf"
5
6 // these are used to limit the configuration names and values lengths
7 // they are not enforced by config.c functions (they will strdup() all strings, no matter of their length)
8 #define CONFIG_MAX_NAME 1024
9 #define CONFIG_MAX_VALUE 2048
10
11 struct config {
12     struct section *sections;
13     pthread_mutex_t mutex;
14     avl_tree_lock index;
15 };
16
17 extern struct config
18         netdata_config,
19         stream_config;
20
21 #define CONFIG_BOOLEAN_NO   0
22 #define CONFIG_BOOLEAN_YES  1
23 #define CONFIG_BOOLEAN_AUTO 2
24
25 extern int appconfig_load(struct config *root, char *filename, int overwrite_used);
26
27 extern char *appconfig_get(struct config *root, const char *section, const char *name, const char *default_value);
28 extern long long appconfig_get_number(struct config *root, const char *section, const char *name, long long value);
29 extern int appconfig_get_boolean(struct config *root, const char *section, const char *name, int value);
30 extern int appconfig_get_boolean_ondemand(struct config *root, const char *section, const char *name, int value);
31
32 extern const char *appconfig_set(struct config *root, const char *section, const char *name, const char *value);
33 extern const char *appconfig_set_default(struct config *root, const char *section, const char *name, const char *value);
34 extern long long appconfig_set_number(struct config *root, const char *section, const char *name, long long value);
35 extern int appconfig_set_boolean(struct config *root, const char *section, const char *name, int value);
36
37 extern int appconfig_exists(struct config *root, const char *section, const char *name);
38 extern int appconfig_rename(struct config *root, const char *section, const char *old, const char *new);
39
40 extern void appconfig_generate(struct config *root, BUFFER *wb, int only_changed);
41
42 // ----------------------------------------------------------------------------
43 // shortcuts for the default netdata configuration
44
45 #define config_load(filename, overwrite_used) appconfig_load(&netdata_config, filename, overwrite_used)
46 #define config_get(section, name, default_value) appconfig_get(&netdata_config, section, name, default_value)
47 #define config_get_number(section, name, value) appconfig_get_number(&netdata_config, section, name, value)
48 #define config_get_boolean(section, name, value) appconfig_get_boolean(&netdata_config, section, name, value)
49 #define config_get_boolean_ondemand(section, name, value) appconfig_get_boolean_ondemand(&netdata_config, section, name, value)
50
51 #define config_set(section, name, default_value) appconfig_get(&netdata_config, section, name, default_value)
52 #define config_set_default(section, name, value) appconfig_set_default(&netdata_config, section, name, value)
53 #define config_set_number(section, name, value) appconfig_set_number(&netdata_config, section, name, value)
54 #define config_set_boolean(section, name, value) appconfig_set_boolean(&netdata_config, section, name, value)
55
56 #define config_exists(section, name) appconfig_exists(&netdata_config, section, name)
57 #define config_rename(section, old, new) appconfig_rename(&netdata_config, section, old, new)
58
59 #define config_generate(buffer, only_changed) appconfig_generate(&netdata_config, buffer, only_changed)
60
61 #endif /* NETDATA_CONFIG_H */