diff options
author | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-12-04 10:15:57 +0100 |
---|---|---|
committer | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-12-04 15:09:23 +0100 |
commit | 2a588b74822cf093198bdbc01fb0f2d57a3f3fec (patch) | |
tree | 79abbecfb1243266892eed540039d314d4ba36e0 | |
parent | 3dd9b3710a6724538c9b87581a1d7182808f3ba3 (diff) |
Add function to get config default search path
Add a function to get default search path for controller json
configuration files.
BUG-AGL: SPEC-3011
Change-Id: Ib19824349eb599332c86c8e0647fe60cb5fb0144
Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
-rw-r--r-- | ctl-lib/ctl-config.c | 39 | ||||
-rw-r--r-- | ctl-lib/ctl-config.h | 2 |
2 files changed, 41 insertions, 0 deletions
diff --git a/ctl-lib/ctl-config.c b/ctl-lib/ctl-config.c index 9039ac5..e6a16b9 100644 --- a/ctl-lib/ctl-config.c +++ b/ctl-lib/ctl-config.c @@ -346,3 +346,42 @@ int CtlLoadSections(afb_api_t apiHandle, CtlConfigT *ctlHandle, CtlSectionT *sec return 0; } + +char *GetDefaultConfigSearchPath(afb_api_t apiHandle) +{ + size_t searchPathLength; + char *searchPath, *binderRootDirPath, *bindingParentDirPath; + + if(! apiHandle) + return NULL; + + binderRootDirPath = GetAFBRootDirPath(apiHandle); + if(! binderRootDirPath) + return NULL; + + bindingParentDirPath = GetBindingParentDirPath(apiHandle); + if(! bindingParentDirPath) { + free(binderRootDirPath); + return NULL; + } + + /* Allocating with the size of binding root dir path + binding parent directory path + * + 1 character for the NULL terminating character + 1 character for the additional separator + * between binderRootDirPath and bindingParentDirPath + 2*4 char for '/etc suffixes'. + */ + searchPathLength = strlen(binderRootDirPath) + strlen(bindingParentDirPath) + 10; + + searchPath = malloc(searchPathLength); + if(! searchPath) { + free(binderRootDirPath); + free(bindingParentDirPath); + return NULL; + } + + snprintf(searchPath, searchPathLength, "%s/etc:%s/etc", binderRootDirPath, bindingParentDirPath); + + free(binderRootDirPath); + free(bindingParentDirPath); + + return searchPath; +} diff --git a/ctl-lib/ctl-config.h b/ctl-lib/ctl-config.h index dc98bb2..53a75f4 100644 --- a/ctl-lib/ctl-config.h +++ b/ctl-lib/ctl-config.h @@ -111,6 +111,7 @@ extern int CtlConfigExec(afb_api_t apiHandle, CtlConfigT *ctlConfig) ; extern CtlConfigT *CtlLoadMetaDataJson(afb_api_t apiHandle,json_object *ctlConfigJ, const char *prefix) ; extern CtlConfigT *CtlLoadMetaDataUsingPrefix(afb_api_t apiHandle,const char* filepath, const char *prefix) ; extern int CtlLoadSections(afb_api_t apiHandle, CtlConfigT *ctlHandle, CtlSectionT *sections); +extern char *GetDefaultConfigSearchPath(afb_api_t apiHandle); #define CtlLoadMetaData(api, filepath) CtlLoadMetaDataUsingPrefix(api, filepath, NULL) // ctl-event.c @@ -129,6 +130,7 @@ extern int PluginConfig(afb_api_t UNUSED_ARG(apiHandle), CtlSectionT *section, j extern int PluginGetCB (afb_api_t apiHandle, CtlActionT *action , json_object *callbackJ); extern void* getPluginContext(CtlPluginT *plugin); extern void setPluginContext(CtlPluginT *plugin, void *context); + #ifdef __cplusplus } #endif |