config is generated commented if the settings are the default
Costa Tsaousis (ktsaou) committed
May 1, 2014 at 06:48 UTC
829ccaaf33bd2cd5aa3af8fce685cd3511c68b04
1 file changed
+21
-7
netdata.c
+21
-7
@@ -366,6 +366,7 @@ struct config_value {
366
// we first compare hashes, and only if the hashes are equal we do string comparisons
367
368
int used;
369
+ int changed;
370
371
struct config_value *next;
372
};
@@ -564,6 +565,8 @@ char *config_get(const char *section, const char *name, const char *default_valu
565
if(!cv) cv = config_value_create(co, name, default_value);
566
cv->used = 1;
567
568
+ if(strcmp(cv->value, default_value) != 0) cv->changed = 1;
569
+
570
pthread_mutex_unlock(&config_mutex);
571
return(cv->value);
572
}
@@ -614,6 +617,7 @@ void config_set(const char *section, const char *name, char *value)
617
618
if(!cv) cv = config_value_create(co, name, value);
619
cv->used = 1;
620
+ cv->changed = 1;
621
622
strncpy(cv->value, value, CONFIG_MAX_VALUE);
623
// termination is already there
@@ -1935,7 +1939,7 @@ unsigned long rrd_stats_json(int type, RRD_STATS *st, struct web_buffer *wb, siz
1939
return last_timestamp;
1940
}
1941
1938
-void generate_config(struct web_buffer *wb)
1942
+void generate_config(struct web_buffer *wb, int only_changed)
1943
{
1944
int i, pri;
1945
struct config *co;
@@ -1945,7 +1949,11 @@ void generate_config(struct web_buffer *wb)
1949
web_buffer_increase(wb, 500);
1950
switch(i) {
1951
case 0:
1948
- web_buffer_printf(wb, "\n\n# global netdata configuration\n");
1952
+ web_buffer_printf(wb,
1953
+ "# NetData Configuration\n"
1954
+ "# You can uncomment and change any of the options bellow.\n"
1955
+ "# The value shown in the commented settings, is the default value.\n"
1956
+ "\n# global netdata configuration\n");
1957
break;
1958
1959
case 1:
@@ -1964,8 +1972,13 @@ void generate_config(struct web_buffer *wb)
1972
1973
if(i == pri) {
1974
int used = 0;
1967
- for(cv = co->values; cv ; cv = cv->next)
1975
+ int changed = 0;
1976
+ for(cv = co->values; cv ; cv = cv->next) {
1977
used += cv->used;
1978
+ changed += cv->changed;
1979
+ }
1980
+
1981
+ if(only_changed && !changed) continue;
1982
1983
if(!used) {
1984
web_buffer_increase(wb, 500);
@@ -1976,12 +1989,13 @@ void generate_config(struct web_buffer *wb)
1989
web_buffer_printf(wb, "\n[%s]\n", co->name);
1990
1991
for(cv = co->values; cv ; cv = cv->next) {
1992
+
1993
if(used && !cv->used) {
1994
web_buffer_increase(wb, CONFIG_MAX_NAME + 200);
1995
web_buffer_printf(wb, "\n\t# option '%s' is not used.\n", cv->name);
1996
}
1997
web_buffer_increase(wb, CONFIG_MAX_NAME + CONFIG_MAX_VALUE + 5);
1984
- web_buffer_printf(wb, "\t%s = %s\n", cv->name, cv->value);
1998
+ web_buffer_printf(wb, "\t%s%s = %s\n", (!cv->changed)?"# ":"", cv->name, cv->value);
1999
}
2000
}
2001
}
@@ -2455,7 +2469,7 @@ void web_client_process(struct web_client *w)
2469
2470
w->data->contenttype = CT_TEXT_PLAIN;
2471
w->data->bytes = 0;
2458
- generate_config(w->data);
2472
+ generate_config(w->data, 0);
2473
}
2474
else if(strcmp(tok, WEB_PATH_FILE) == 0) { // "file"
2475
tok = mystrsep(&url, "/?&");
@@ -5549,7 +5563,7 @@ int main(int argc, char **argv)
5563
else if(strcmp(argv[i], "-p") == 0 && (i+1) < argc) { config_set("global", "port", argv[i+1]); i++; }
5564
else if(strcmp(argv[i], "-u") == 0 && (i+1) < argc) { config_set("global", "run as user", argv[i+1]); i++; }
5565
else if(strcmp(argv[i], "-l") == 0 && (i+1) < argc) { config_set("global", "history", argv[i+1]); i++; }
5552
- else if(strcmp(argv[i], "-t") == 0 && (i+1) < argc) { config_set("global", "update_every", argv[i+1]); i++; }
5566
+ else if(strcmp(argv[i], "-t") == 0 && (i+1) < argc) { config_set("global", "update every", argv[i+1]); i++; }
5567
else {
5568
fprintf(stderr, "Cannot understand option '%s'.\n", argv[i]);
5569
fprintf(stderr, "\nUSAGE: %s [-d] [-l LINES_TO_SAVE] [-u UPDATE_TIMER] [-p LISTEN_PORT] [-dl debug log file] [-df debug flags].\n\n", argv[0]);
@@ -5620,7 +5634,7 @@ int main(int argc, char **argv)
5634
5635
// --------------------------------------------------------------------
5636
5623
- update_every = config_get_number("global", "update_every", UPDATE_EVERY);
5637
+ update_every = config_get_number("global", "update every", UPDATE_EVERY);
5638
if(update_every < 1 || update_every > 600) {
5639
fprintf(stderr, "Invalid update timer %d given. Defaulting to %d.\n", update_every, UPDATE_EVERY_MAX);
5640
update_every = UPDATE_EVERY;