diff --git a/degesch.c b/degesch.c index ba624de..9cd3882 100644 --- a/degesch.c +++ b/degesch.c @@ -2156,18 +2156,8 @@ log_message_attributed (void *user_data, const char *quote, const char *fmt, input_show (&ctx->input); } -static void -apply_attribute_change (struct config_item *item, int id) -{ - struct app_context *ctx = item->user_data; - free (ctx->attrs[id]); - ctx->attrs[id] = xstrdup (item->type == CONFIG_ITEM_NULL - ? ctx->attrs_defaults[id] - : item->value.string.str); -} - -static void -on_config_attribute_change (struct config_item *item) +static ssize_t +attr_by_name (const char *name) { static const char *table[ATTR_COUNT] = { @@ -2177,11 +2167,23 @@ on_config_attribute_change (struct config_item *item) }; for (size_t i = 0; i < N_ELEMENTS (table); i++) - if (!strcmp (item->schema->name, table[i])) - { - apply_attribute_change (item, i); - return; - } + if (!strcmp (name, table[i])) + return i; + return -1; +} + +static void +on_config_attribute_change (struct config_item *item) +{ + struct app_context *ctx = item->user_data; + ssize_t id = attr_by_name (item->schema->name); + if (id != -1) + { + free (ctx->attrs[id]); + ctx->attrs[id] = xstrdup (item->type == CONFIG_ITEM_NULL + ? ctx->attrs_defaults[id] + : item->value.string.str); + } } static void