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 --- src/aft.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src/aft.c') 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