diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-09-08 17:21:40 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2018-12-13 14:12:02 +0100 |
commit | f9bc4d078a3e6e273b5602042220d63cdd26c0f6 (patch) | |
tree | 6c41a482b5c4cf4792cd2ba455558acedcfa9bd6 | |
parent | 0d3acdd1ac876a1de4893d534ba6fc438045c93d (diff) |
Only return binding root dir.
If subdirs path is needed then concatenation as to be done
using the rootdir.
Change-Id: I50a1eeb1f853ae26995a96e1661ff38cb7959f60
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
-rw-r--r-- | filescan-utils.c | 31 | ||||
-rw-r--r-- | filescan-utils.h | 11 |
2 files changed, 6 insertions, 36 deletions
diff --git a/filescan-utils.c b/filescan-utils.c index fe01bdc..83565b2 100644 --- a/filescan-utils.c +++ b/filescan-utils.c @@ -126,42 +126,21 @@ PUBLIC const char *GetBinderName() { PUBLIC const char *GetBindingDirPath(BindingDirsT dir) { // A file description should not be greater than 999.999.999 - char fd[10]; - static char retdir[CONTROL_MAXPATH_LEN]; - sprintf(fd, "%d", afb_daemon_rootdir_get_fd()); - char* fd_link = malloc(strlen("/proc/self/fd/") + strlen(fd)); - strcpy(fd_link, "/proc/self/fd/"); - strcat(fd_link, fd); + char fd_link[CONTROL_MAXPATH_LEN]; + char retdir[CONTROL_MAXPATH_LEN]; + sprintf(fd_link, "/proc/self/fd/%d", afb_daemon_rootdir_get_fd()); ssize_t len; if((len = readlink(fd_link, retdir, sizeof(retdir)-1)) == -1) { perror("lstat"); AFB_ERROR("Error reading stat of link: %s", fd_link); - strcpy(retdir, "/tmp"); + strncpy(retdir, "/tmp", 4); } else { retdir[len] = '\0'; - switch (dir) { - case BIN_DIR: - strcat(retdir, "/bin"); - break; - case ETC_DIR: - strcat(retdir, "/etc"); - break; - case LIB_DIR: - strcat(retdir, "/lib"); - break; - case DATA_DIR: - strcat(retdir, "/data"); - break; - case HTTP_DIR: - strcat(retdir, "/http"); - break; - } } - free(fd_link); - return retdir; + return strndup(retdir, sizeof(retdir)); } diff --git a/filescan-utils.h b/filescan-utils.h index 738be27..68df0fc 100644 --- a/filescan-utils.h +++ b/filescan-utils.h @@ -44,19 +44,10 @@ typedef enum { CTL_SCAN_RECURSIVE=1, } CtlScanDirModeT; -typedef enum { - ROOT_DIR=0, - BIN_DIR=1, - ETC_DIR=2, - DATA_DIR=3, - LIB_DIR=4, - HTTP_DIR=5 -} BindingDirsT - PUBLIC const char *GetMidleName(const char*name); PUBLIC const char *GetBinderName(); PUBLIC json_object* ScanForConfig (const char* searchPath, CtlScanDirModeT mode, const char *pre, const char *ext); -PUBLIC const char *GetBindingDirPath(BindingDirsT dir); +PUBLIC const char *GetBindingDirPath(); #ifdef __cplusplus |