From 9bbba6809a8a6471e0a6dd70d76a4197abaa0e4d Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens <hauke@hauke-m.de> Date: Wed, 21 Aug 2019 21:23:57 +0200 Subject: [PATCH] BLE: FileTrans: Use full path when creating dir We have to use the full path when we create a new directory. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> --- epicardium/ble/filetransfer.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/epicardium/ble/filetransfer.c b/epicardium/ble/filetransfer.c index 2e46d47fa..875b070cb 100644 --- a/epicardium/ble/filetransfer.c +++ b/epicardium/ble/filetransfer.c @@ -237,8 +237,11 @@ static int bleFileCreateOrOpen(char *filepath) { char *path; char *fileName = NULL; + char filecreate[100]; int ret; + filecreate[0] = 0; + while (true) { path = strtok(filepath, "/"); filepath = NULL; @@ -250,14 +253,23 @@ static int bleFileCreateOrOpen(char *filepath) return -EINVAL; if (fileName) { - ret = epic_file_mkdir(fileName); - if (ret) - return ret; + ret = epic_file_stat(filecreate, NULL); + if (ret) { + ret = epic_file_mkdir(filecreate); + if (ret) { + printf("mkdir failed: %s, ret: %i\n", + filecreate, + ret); + return ret; + } + } } fileName = path; + strncat(filecreate, "/", sizeof(filecreate) - 1); + strncat(filecreate, path, sizeof(filecreate) - 1); } - return epic_file_open(filepath, "w"); + return epic_file_open(filecreate, "w"); } static uint8_t bleFileOpen(dmConnId_t connId, uint8_t *pValue, uint16_t len) -- GitLab