fix to update tc (QoS) names if they are updated
Costa Tsaousis committed
Jan 25, 2016 at 22:43 UTC
d158156710b921416b2484abd4ff8e79cdbe68b4
3 files changed
+36
-5
src/appconfig.c
+34
-4
@@ -340,6 +340,34 @@ int config_get_boolean_ondemand(const char *section, const char *name, int value
340
return value;
341
}
342
343
+const char *config_set_default(const char *section, const char *name, const char *value)
344
+{
345
+ struct config_value *cv;
346
+
347
+ debug(D_CONFIG, "request to set config in section '%s', name '%s', value '%s'", section, name, value);
348
+
349
+ struct config *co = config_find_section(section);
350
+ if(!co) return config_set(section, name, value);
351
+
352
+ cv = config_value_index_find(co, name, 0);
353
+ if(!cv) return config_set(section, name, value);
354
+
355
+ cv->flags |= CONFIG_VALUE_USED;
356
+
357
+ if(cv->flags & CONFIG_VALUE_LOADED)
358
+ return cv->value;
359
+
360
+ if(strcmp(cv->value, value) != 0) {
361
+ cv->flags |= CONFIG_VALUE_CHANGED;
362
+
363
+ free(cv->value);
364
+ cv->value = strdup(value);
365
+ if(!cv->value) fatal("Cannot allocate config.value");
366
+ }
367
+
368
+ return cv->value;
369
+}
370
+
371
const char *config_set(const char *section, const char *name, const char *value)
372
{
373
struct config_value *cv;
@@ -353,11 +381,13 @@ const char *config_set(const char *section, const char *name, const char *value)
381
if(!cv) cv = config_value_create(co, name, value);
382
cv->flags |= CONFIG_VALUE_USED;
383
356
- if(strcmp(cv->value, value) != 0) cv->flags |= CONFIG_VALUE_CHANGED;
384
+ if(strcmp(cv->value, value) != 0) {
385
+ cv->flags |= CONFIG_VALUE_CHANGED;
386
358
- free(cv->value);
359
- cv->value = strdup(value);
360
- if(!cv->value) fatal("Cannot allocate config.value");
387
+ free(cv->value);
388
+ cv->value = strdup(value);
389
+ if(!cv->value) fatal("Cannot allocate config.value");
390
+ }
391
392
return value;
393
}
src/appconfig.h
+1
@@ -22,6 +22,7 @@ extern int config_get_boolean(const char *section, const char *name, int value);
22
extern int config_get_boolean_ondemand(const char *section, const char *name, int value);
23
24
extern const char *config_set(const char *section, const char *name, const char *value);
25
+extern const char *config_set_default(const char *section, const char *name, const char *value);
26
extern long long config_set_number(const char *section, const char *name, long long value);
27
extern int config_set_boolean(const char *section, const char *name, int value);
28
src/rrd.c
+1
-1
@@ -592,7 +592,7 @@ void rrddim_set_name(RRDSET *st, RRDDIM *rd, const char *name)
592
593
char varname[CONFIG_MAX_NAME + 1];
594
snprintf(varname, CONFIG_MAX_NAME, "dim %s name", rd->id);
595
- config_get(st->id, varname, name);
595
+ config_set_default(st->id, varname, name);
596
}
597
598
void rrddim_free(RRDSET *st, RRDDIM *rd)