degesch: only apply relevant attributes on change
This commit is contained in:
parent
3a922c3c1a
commit
6de7ae9583
21
degesch.c
21
degesch.c
|
@ -1868,22 +1868,31 @@ 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 const char *table[ATTR_COUNT] =
|
||||
{
|
||||
#define XX(x, y, z) [ATTR_ ## x] = "attributes." y,
|
||||
#define XX(x, y, z) [ATTR_ ## x] = y,
|
||||
ATTR_TABLE (XX)
|
||||
#undef XX
|
||||
};
|
||||
|
||||
struct app_context *ctx = item->user_data;
|
||||
for (int id = 0; id < ATTR_COUNT; id++)
|
||||
for (size_t i = 0; i < N_ELEMENTS (table); i++)
|
||||
if (!strcmp (item->schema->name, table[i]))
|
||||
{
|
||||
const char *user = get_config_string (ctx->config.root, table[id]);
|
||||
free (ctx->attrs[id]);
|
||||
ctx->attrs[id] = xstrdup (user ? user : ctx->attrs_defaults[id]);
|
||||
apply_attribute_change (item, i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue