Skip to content

Commit 2dabb14

Browse files
fix: Skip mkdir for FatFS root in settings API
Signed-off-by: Gopalkrishna N Biradar <[email protected]>
1 parent 4b4bba4 commit 2dabb14

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

subsys/settings/src/settings_file.c

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -532,25 +532,31 @@ static int mkdir_if_not_exists(const char *path)
532532

533533
static int mkdir_for_file(const char *file_path)
534534
{
535-
char dir_path[SETTINGS_FILE_NAME_MAX];
536-
int err;
537-
538-
for (size_t i = 0; file_path[i] != '\0'; i++) {
539-
if (i > 0 && file_path[i] == '/') {
540-
dir_path[i] = '\0';
541-
542-
err = mkdir_if_not_exists(dir_path);
543-
if (err) {
544-
return err;
545-
}
546-
}
547-
548-
dir_path[i] = file_path[i];
549-
}
550-
551-
return 0;
535+
char dir_path[SETTINGS_FILE_NAME_MAX];
536+
int err;
537+
538+
for (size_t i = 0; file_path[i] != '\0'; i++) {
539+
if (i > 0 && file_path[i] == '/') {
540+
dir_path[i] = '\0';
541+
542+
// Skip mkdir for FatFS root directories (ending with ':')
543+
if (strrchr(dir_path, ':') == &dir_path[strlen(dir_path) - 1]) {
544+
LOG_DBG("FatFS root directory detected, skipping mkdir for path: %s",
545+
dir_path);
546+
} else {
547+
err = mkdir_if_not_exists(dir_path);
548+
if (err) {
549+
return err;
550+
}
551+
}
552+
}
553+
dir_path[i] = file_path[i];
554+
}
555+
556+
return 0;
552557
}
553558

559+
554560
int settings_backend_init(void)
555561
{
556562
static struct settings_file config_init_settings_file = {

0 commit comments

Comments
 (0)