summaryrefslogtreecommitdiff
path: root/main/sorcery.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/sorcery.c')
-rw-r--r--main/sorcery.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/main/sorcery.c b/main/sorcery.c
index f9ff6d563..6a0fb4acc 100644
--- a/main/sorcery.c
+++ b/main/sorcery.c
@@ -330,7 +330,7 @@ static void sorcery_object_type_destructor(void *obj)
}
/*! \brief Internal function which allocates an object type structure */
-static struct ast_sorcery_object_type *sorcery_object_type_alloc(const char *type)
+static struct ast_sorcery_object_type *sorcery_object_type_alloc(const char *type, const char *module)
{
struct ast_sorcery_object_type *object_type;
@@ -361,6 +361,7 @@ static struct ast_sorcery_object_type *sorcery_object_type_alloc(const char *typ
object_type->info->files[0] = object_type->file;
object_type->info->files[1] = NULL;
+ object_type->info->module = module;
ast_copy_string(object_type->name, type, sizeof(object_type->name));
@@ -382,7 +383,7 @@ static void sorcery_object_wizard_destructor(void *obj)
}
/*! \brief Internal function which creates an object type and adds a wizard mapping */
-static int sorcery_apply_wizard_mapping(struct ast_sorcery *sorcery, const char *type, const char *name, const char *data, unsigned int caching)
+static int sorcery_apply_wizard_mapping(struct ast_sorcery *sorcery, const char *type, const char *module, const char *name, const char *data, unsigned int caching)
{
RAII_VAR(struct ast_sorcery_object_type *, object_type, ao2_find(sorcery->types, type, OBJ_KEY), ao2_cleanup);
RAII_VAR(struct ast_sorcery_wizard *, wizard, ao2_find(wizards, name, OBJ_KEY), ao2_cleanup);
@@ -394,7 +395,7 @@ static int sorcery_apply_wizard_mapping(struct ast_sorcery *sorcery, const char
}
if (!object_type) {
- if (!(object_type = sorcery_object_type_alloc(type))) {
+ if (!(object_type = sorcery_object_type_alloc(type, module))) {
return -1;
}
created = 1;
@@ -418,7 +419,7 @@ static int sorcery_apply_wizard_mapping(struct ast_sorcery *sorcery, const char
return 0;
}
-int ast_sorcery_apply_config(struct ast_sorcery *sorcery, const char *name)
+int __ast_sorcery_apply_config(struct ast_sorcery *sorcery, const char *name, const char *module)
{
struct ast_flags flags = { 0 };
struct ast_config *config = ast_config_load2("sorcery.conf", "sorcery", flags);
@@ -447,7 +448,7 @@ int ast_sorcery_apply_config(struct ast_sorcery *sorcery, const char *name)
}
/* Any error immediately causes us to stop */
- if ((res = sorcery_apply_wizard_mapping(sorcery, name, wizard, data, caching))) {
+ if ((res = sorcery_apply_wizard_mapping(sorcery, name, module, wizard, data, caching))) {
break;
}
}
@@ -457,7 +458,7 @@ int ast_sorcery_apply_config(struct ast_sorcery *sorcery, const char *name)
return res;
}
-int ast_sorcery_apply_default(struct ast_sorcery *sorcery, const char *type, const char *name, const char *data)
+int __ast_sorcery_apply_default(struct ast_sorcery *sorcery, const char *type, const char *module, const char *name, const char *data)
{
RAII_VAR(struct ast_sorcery_object_type *, object_type, ao2_find(sorcery->types, type, OBJ_KEY), ao2_cleanup);
@@ -466,7 +467,7 @@ int ast_sorcery_apply_default(struct ast_sorcery *sorcery, const char *type, con
return -1;
}
- return sorcery_apply_wizard_mapping(sorcery, type, name, data, 0);
+ return sorcery_apply_wizard_mapping(sorcery, type, module, name, data, 0);
}
int ast_sorcery_object_register(struct ast_sorcery *sorcery, const char *type, aco_type_item_alloc alloc, sorcery_transform_handler transform, sorcery_apply_handler apply)