diff options
author | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-12-03 17:16:19 +0100 |
---|---|---|
committer | Jonathan Aillet <jonathan.aillet@iot.bzh> | 2019-12-04 14:45:36 +0100 |
commit | 6d828a1b309685ad7f5d74abc0162c59fbbd3304 (patch) | |
tree | 9cefd7edde86a987bf8d7ffe89110ab43150ee9d | |
parent | 4480e19e555318d04a8b63f8e5ef827b627ea408 (diff) |
Add 'GetRunningBindingDirPath' functionicefish_8.99.4icefish_8.99.3icefish_8.99.2icefish/8.99.4icefish/8.99.3icefish/8.99.28.99.48.99.38.99.2
Add 'GetRunningBindingDirPath' function that returns the binding
directory path (the path to the directory that contains the binding).
FYI:
- 'Binding directory path' is the path to the directory that contains
a binding binding launched by the binder.
- 'Binder root directory path' is the path specified at binder launch
using '--rootdir' option. If no option is specified, binder root
directory is set to the current directory.
SPEC-AGL: SPEC-3009
Change-Id: I34b3d17710ebc2bf06541a00ca7f8d7189f6aa18
Signed-off-by: Jonathan Aillet <jonathan.aillet@iot.bzh>
-rw-r--r-- | docs/filescan-utils.md | 9 | ||||
-rw-r--r-- | filescan-utils.c | 26 | ||||
-rw-r--r-- | filescan-utils.h | 10 |
3 files changed, 45 insertions, 0 deletions
diff --git a/docs/filescan-utils.md b/docs/filescan-utils.md index d91ff1c..6b52cd2 100644 --- a/docs/filescan-utils.md +++ b/docs/filescan-utils.md @@ -58,6 +58,15 @@ For binding with a version >= 3, same as 'GetAFBRootDirPath' function. Deprecated, please use 'GetAFBRootDirPath' function. Kept for compatibility issues. +## char *GetRunningBindingDirPath(afb_api_t api) + +For binding with a version >= 3, get the binding directory path +(the path to the directory that contains the binding). + +* `api` : pointer to the AFB API. + +Returns a string representing the path to the binding directory. + ## const char *getEnvDirList(const char *prefix, const char *suffix) Get the environment directory colon separated path list. This take the prefix diff --git a/filescan-utils.c b/filescan-utils.c index 236e192..6ac90fe 100644 --- a/filescan-utils.c +++ b/filescan-utils.c @@ -179,7 +179,33 @@ char *GetAFBRootDirPath(afb_api_t apiHandle) return GetAFBRootDirPathUsingFd(fd); } +char *GetRunningBindingDirPath(afb_api_t apiHandle) +{ + int ret; + + char *lastSlashInPath, *bindingDirectoryPath; + const char *bindingPath; + + json_object *settingsJ, *bindingPathJ = NULL; + + settingsJ = afb_api_settings(apiHandle); + if(!settingsJ) + return NULL; + + ret = json_object_object_get_ex(settingsJ, "binding-path", &bindingPathJ); + if(!ret || !bindingPathJ || !json_object_is_type(bindingPathJ, json_type_string)) + return NULL; + + bindingPath = json_object_get_string(bindingPathJ); + + lastSlashInPath = rindex(bindingPath, '/'); + if(!lastSlashInPath) + return NULL; + + bindingDirectoryPath = strndup(bindingPath, lastSlashInPath - bindingPath); + return bindingDirectoryPath; +} /** diff --git a/filescan-utils.h b/filescan-utils.h index f96d903..0783ebe 100644 --- a/filescan-utils.h +++ b/filescan-utils.h @@ -123,6 +123,16 @@ __attribute__((alias("GetAFBRootDirPath_v3"))) static char *GetBindingDirPath(afb_api_t api); #endif +/* + * @brief Get the Binding directory + * + * @param dynapi : Api use in binding + * + * @return char* string representing the path to binding directory. + * NULL if something wrong happened. + */ +extern char *GetRunningBindingDirPath(afb_api_t apiHandle); + /** * @brief Get the environment directory colon separated path list. This take the * prefix add the binder's name then the suffix as environment variable name and |