aboutsummaryrefslogtreecommitdiff
path: root/common.c
diff options
context:
space:
mode:
authorPřemysl Janouch <p.janouch@gmail.com>2015-07-05 01:56:00 +0200
committerPřemysl Janouch <p.janouch@gmail.com>2015-07-05 02:16:43 +0200
commitb1dd34a7ba1d7558763fcf1f1528d34fc1856829 (patch)
tree533d2ad1e83d424e0242dfb2207890a08619723f /common.c
parent9b41256ebf21a118b3a1a68b9bf2acfd75a7f5be (diff)
downloadxK-b1dd34a7ba1d7558763fcf1f1528d34fc1856829.tar.gz
xK-b1dd34a7ba1d7558763fcf1f1528d34fc1856829.tar.xz
xK-b1dd34a7ba1d7558763fcf1f1528d34fc1856829.zip
degesch: set "user_data" while loading config
It'd be quite wrong to call "on_change" on them without this.
Diffstat (limited to 'common.c')
-rw-r--r--common.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/common.c b/common.c
index 102cbd6..52245b7 100644
--- a/common.c
+++ b/common.c
@@ -1865,11 +1865,9 @@ config_item_clone (struct config_item_ *self)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-// TODO: maybe also make it possible to assign the "user_data" pointer
-
static void
config_schema_fix_value
- (struct config_schema *schema, struct config_item_ *object)
+ (struct config_schema *schema, struct config_item_ *object, void *user_data)
{
struct config_item_ *item =
str_map_find (&object->value.object, schema->name);
@@ -1912,17 +1910,18 @@ config_schema_fix_value
item->type = schema->type;
item->schema = schema;
+ item->user_data = user_data;
if (schema->on_change)
schema->on_change (item);
}
static void
-config_schema_apply_to_object
- (struct config_schema *schema_array, struct config_item_ *object)
+config_schema_apply_to_object (struct config_schema *schema_array,
+ struct config_item_ *object, void *user_data)
{
hard_assert (object->type == CONFIG_ITEM_OBJECT);
while (schema_array->name)
- config_schema_fix_value (schema_array++, object);
+ config_schema_fix_value (schema_array++, object, user_data);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -