From db1118f9cf4482397834ecb8b852c336ee515648 Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Tue, 8 Mar 2016 01:41:48 +1000 Subject: [PATCH] * config.[ch] : updated f2b_config_section_append() --- src/config.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/config.c b/src/config.c index 476d0f0..a561f19 100644 --- a/src/config.c +++ b/src/config.c @@ -135,13 +135,27 @@ 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) { - if (section->param) { - section->last->next = param; - section->last = section->last->next; - } else { + f2b_config_param_t *prev = NULL; + + assert(section != NULL); + assert(param != NULL); + + if (!section->param) { + /* no parameters yet */ section->param = param; section->last = param; + return section; } + + if ((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); + return section; + } + + section->last->next = param; + section->last = param; return section; }