From dff3d17ccbdff57699b6902ca92595379a2cfa11 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Wed, 11 Jul 2018 15:23:19 +0200 Subject: Search the conf file using env and static variables This helps finding configuration in several locations by concatenating environment variables and hardcoded variables. Then it is possible for the apps to retrieve its files or values in any environment (native, board, sdk) more easily. Depends-On: I0ad19242612559d1f4b66b6f9af9e7032d4675a8 Depends-On: Ic448ff017e6158bec05895d63688b8968b5c6434 Change-Id: I26a725c368e8354cfc2531d58de6dc362f7d0618 Signed-off-by: Romain Forlot --- afb-helpers | 2 +- app-controller-submodule | 2 +- conf.d/app-templates | 2 +- src/aft.c | 23 +++++++++++++++++------ 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/afb-helpers b/afb-helpers index 52f0478..4f99d16 160000 --- a/afb-helpers +++ b/afb-helpers @@ -1 +1 @@ -Subproject commit 52f04783535948f2782780992710276f3419e56e +Subproject commit 4f99d163cb8a993f176f305566dbd8a93c79144c diff --git a/app-controller-submodule b/app-controller-submodule index 440be09..88892db 160000 --- a/app-controller-submodule +++ b/app-controller-submodule @@ -1 +1 @@ -Subproject commit 440be0984f16562fdf321c770d65787ecea0e36d +Subproject commit 88892db78f2f5b047923af5b36169052c96bc3c0 diff --git a/conf.d/app-templates b/conf.d/app-templates index 332f377..6fb3846 160000 --- a/conf.d/app-templates +++ b/conf.d/app-templates @@ -1 +1 @@ -Subproject commit 332f377e84a673cdcfe52ce71c932f39c4b48022 +Subproject commit 6fb38467ca1609a1aa1be865b38648f37861af7e diff --git a/src/aft.c b/src/aft.c index bbcaf97..36a8b17 100644 --- a/src/aft.c +++ b/src/aft.c @@ -23,6 +23,8 @@ #include "aft.h" #include "mapis.h" + +#define CONTROL_PREFIX "aft" // default api to print log when apihandle not avaliable afb_dynapi *AFB_default; @@ -109,25 +111,34 @@ static int CtrlLoadOneApi(void *cbdata, AFB_ApiT apiHandle) { int afbBindingEntry(afb_dynapi *apiHandle) { int status, err = 0; - const char *dirList = NULL, *configPath = NULL; + size_t len = 0; + char *dirList; + const char *prefix = CONTROL_PREFIX, *envDirList = NULL, *configPath = NULL; json_object *resourcesJ = NULL, *eventsJ = NULL; CtlConfigT *ctrlConfig = NULL; AFB_default = apiHandle; - AFB_ApiNotice(apiHandle, "Controller in afbBindingVdyn"); + AFB_ApiNotice(apiHandle, "Controller in afbBindingEntry"); + + envDirList = getEnvDirList(prefix, "CONFIG_PATH"); - dirList = getenv("CONTROL_CONFIG_PATH"); - if (!dirList) + if(envDirList) { + len = strlen(CONTROL_CONFIG_PATH) + strlen(envDirList); + dirList = malloc(len + 1); + snprintf(dirList, len + 1, "%s:%s", envDirList, CONTROL_CONFIG_PATH); + } + else { dirList = CONTROL_CONFIG_PATH; + } - configPath = CtlConfigSearch(apiHandle, dirList, "aft"); + configPath = CtlConfigSearch(apiHandle, dirList, prefix); if (!configPath) { AFB_ApiError(apiHandle, "CtlPreInit: No %s* config found in %s ", GetBinderName(), dirList); return ERROR; } // load config file and create API - ctrlConfig = CtlLoadMetaData(apiHandle, configPath); + ctrlConfig = CtlLoadMetaDataUsingPrefix(apiHandle, configPath, prefix); if (!ctrlConfig) { AFB_ApiError(apiHandle, "CtrlBindingDyn No valid control config file in:\n-- %s", -- cgit 1.2.3-korg