From d158156710b921416b2484abd4ff8e79cdbe68b4 Mon Sep 17 00:00:00 2001 From: Costa Tsaousis Date: Mon, 25 Jan 2016 22:43:54 +0200 Subject: [PATCH] fix to update tc (QoS) names if they are updated --- src/appconfig.c | 38 ++++++++++++++++++++++++++++++++++---- src/appconfig.h | 1 + src/rrd.c | 2 +- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/appconfig.c b/src/appconfig.c index 7cbb053b..49eca90f 100755 --- a/src/appconfig.c +++ b/src/appconfig.c @@ -340,6 +340,34 @@ int config_get_boolean_ondemand(const char *section, const char *name, int value return value; } +const char *config_set_default(const char *section, const char *name, const char *value) +{ + struct config_value *cv; + + debug(D_CONFIG, "request to set config in section '%s', name '%s', value '%s'", section, name, value); + + struct config *co = config_find_section(section); + if(!co) return config_set(section, name, value); + + cv = config_value_index_find(co, name, 0); + if(!cv) return config_set(section, name, value); + + cv->flags |= CONFIG_VALUE_USED; + + if(cv->flags & CONFIG_VALUE_LOADED) + return cv->value; + + if(strcmp(cv->value, value) != 0) { + cv->flags |= CONFIG_VALUE_CHANGED; + + free(cv->value); + cv->value = strdup(value); + if(!cv->value) fatal("Cannot allocate config.value"); + } + + return cv->value; +} + const char *config_set(const char *section, const char *name, const char *value) { struct config_value *cv; @@ -353,11 +381,13 @@ const char *config_set(const char *section, const char *name, const char *value) if(!cv) cv = config_value_create(co, name, value); cv->flags |= CONFIG_VALUE_USED; - if(strcmp(cv->value, value) != 0) cv->flags |= CONFIG_VALUE_CHANGED; + if(strcmp(cv->value, value) != 0) { + cv->flags |= CONFIG_VALUE_CHANGED; - free(cv->value); - cv->value = strdup(value); - if(!cv->value) fatal("Cannot allocate config.value"); + free(cv->value); + cv->value = strdup(value); + if(!cv->value) fatal("Cannot allocate config.value"); + } return value; } diff --git a/src/appconfig.h b/src/appconfig.h index 5cfda99b..41d1e19b 100755 --- a/src/appconfig.h +++ b/src/appconfig.h @@ -22,6 +22,7 @@ extern int config_get_boolean(const char *section, const char *name, int value); extern int config_get_boolean_ondemand(const char *section, const char *name, int 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); diff --git a/src/rrd.c b/src/rrd.c index 26dee5ff..1115eac0 100755 --- a/src/rrd.c +++ b/src/rrd.c @@ -592,7 +592,7 @@ void rrddim_set_name(RRDSET *st, RRDDIM *rd, const char *name) char varname[CONFIG_MAX_NAME + 1]; snprintf(varname, CONFIG_MAX_NAME, "dim %s name", rd->id); - config_get(st->id, varname, name); + config_set_default(st->id, varname, name); } void rrddim_free(RRDSET *st, RRDDIM *rd) -- 2.39.2