From a55ab0a382d78f9f33f1f6d51cd7a0fa8ed10974 Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Tue, 8 Mar 2016 12:29:23 +1000 Subject: [PATCH] * config.[ch]: f2b_config_section_append() : add 'replace' flag --- src/config.c | 6 +++--- src/config.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) 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);