@cryptotaxi247 / netdata-1 / commits / 829ccaaf3

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;