From 7387497703fc8a26eaacb7e974137ea78e02514d Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Tue, 11 Sep 2018 11:09:15 +0200 Subject: Add an Init step to the plugins load The onload step could be considered as a preinit step. Init stage happens once all plugins are loaded and so you can refer to them to add new actions or configuration elements. Change-Id: I7986265bb1227208d0648bb2c56a1172b164faf1 Signed-off-by: Romain Forlot --- ctl-lib/ctl-plugin.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'ctl-lib/ctl-plugin.c') diff --git a/ctl-lib/ctl-plugin.c b/ctl-lib/ctl-plugin.c index d27b71d..3dfecd9 100644 --- a/ctl-lib/ctl-plugin.c +++ b/ctl-lib/ctl-plugin.c @@ -438,8 +438,17 @@ int PluginConfig(AFB_ApiT apiHandle, CtlSectionT *section, json_object *pluginsJ { // Jose hack to make verbosity visible from sharedlib and // be able to call verb from others api inside the binder - struct afb_binding_data_v2 *afbHidenData = dlsym(ctlPlugins[idx++].dlHandle, "afbBindingV2data"); + struct afb_binding_data_v2 *afbHidenData = dlsym(ctlPlugins[idx].dlHandle, "afbBindingV2data"); if (afbHidenData) *afbHidenData = afbBindingV2data; + + DispatchPluginInstallCbT ctlPluginInit = dlsym(ctlPlugins[idx].dlHandle, "CtlPluginInit"); + if (ctlPluginInit) { + if((*ctlPluginInit) (&ctlPlugins[idx], ctlPlugins[idx].context)) { + AFB_ApiError(apiHandle, "Plugin Init function hasn't finish well. Abort initialization"); + return -1; + } + } + idx++; } return 0; } -- cgit 1.2.3-korg