diff --git a/src/config.c b/src/config.c index a561f19..d7b44c7 100644 --- a/src/config.c +++ b/src/config.c @@ -134,7 +134,7 @@ f2b_config_section_find(f2b_config_section_t *section, const char *name) { } f2b_config_section_t * -f2b_config_section_append(f2b_config_section_t *section, f2b_config_param_t *param) { +f2b_config_section_append(f2b_config_section_t *section, f2b_config_param_t *param, bool replace) { f2b_config_param_t *prev = NULL; assert(section != NULL); @@ -147,7 +147,7 @@ f2b_config_section_append(f2b_config_section_t *section, f2b_config_param_t *par return section; } - if ((prev = f2b_config_param_find(section->param, param->name)) != NULL) { + if (replace && (prev = f2b_config_param_find(section->param, param->name)) != NULL) { /* found param with same name */ strncpy(prev->value, param->value, sizeof(prev->value)); free(param); @@ -222,7 +222,7 @@ f2b_config_load(const char *path) { f2b_log_msg(log_error, "can't parse key/value at line %d: %s", linenum, p); continue; } - f2b_config_section_append(section, param); + f2b_config_section_append(section, param, false); break; } /* switch */ } /* while */ diff --git a/src/config.h b/src/config.h index f2aea7d..69cc3e4 100644 --- a/src/config.h +++ b/src/config.h @@ -40,7 +40,7 @@ f2b_config_param_t * f2b_config_param_find (f2b_config_param_t *param, const ch f2b_config_section_t * f2b_config_section_create(const char *line); f2b_config_section_t * f2b_config_section_find (f2b_config_section_t *s, const char *name); -f2b_config_section_t * f2b_config_section_append(f2b_config_section_t *s, f2b_config_param_t *p); +f2b_config_section_t * f2b_config_section_append(f2b_config_section_t *s, f2b_config_param_t *p, bool replace); f2b_config_t * f2b_config_load (const char *path); void f2b_config_free (f2b_config_t *c);