From 14cdcc1497b3108b420f6b57e449452d9ec60092 Mon Sep 17 00:00:00 2001 From: Steven Mattera Date: Thu, 8 Nov 2018 19:09:14 -0500 Subject: [PATCH] Ignore hidden files when using wildcards. --- bootloader/config/ini.c | 2 +- bootloader/hos/hos.c | 2 +- bootloader/main.c | 2 +- bootloader/utils/dirlist.c | 6 +++--- bootloader/utils/dirlist.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/bootloader/config/ini.c b/bootloader/config/ini.c index 283022d..1b389d6 100644 --- a/bootloader/config/ini.c +++ b/bootloader/config/ini.c @@ -45,7 +45,7 @@ int ini_parse(link_t *dst, char *ini_path, bool is_dir) if (is_dir) { - filelist = dirlist(filename, "*.ini"); + filelist = dirlist(filename, "*.ini", false); if (!filelist) { free(filename); diff --git a/bootloader/hos/hos.c b/bootloader/hos/hos.c index b3d85c2..d30bd2f 100644 --- a/bootloader/hos/hos.c +++ b/bootloader/hos/hos.c @@ -376,7 +376,7 @@ static int _config_kip1(launch_ctxt_t *ctxt, const char *value) u32 dirlen = 0; dir[strlen(dir) - 2] = 0; - char *filelist = dirlist(dir, "*.kip*"); + char *filelist = dirlist(dir, "*.kip*", false); memcpy(dir + strlen(dir), "/", 2); dirlen = strlen(dir); diff --git a/bootloader/main.c b/bootloader/main.c index b5fc7f7..e2ecc18 100644 --- a/bootloader/main.c +++ b/bootloader/main.c @@ -1985,7 +1985,7 @@ void launch_tools(u8 type) else memcpy(dir, "bootloader/libtools", 20); - filelist = dirlist(dir, NULL); + filelist = dirlist(dir, NULL, false); u32 i = 0; diff --git a/bootloader/utils/dirlist.c b/bootloader/utils/dirlist.c index ba600a7..62e2123 100644 --- a/bootloader/utils/dirlist.c +++ b/bootloader/utils/dirlist.c @@ -21,7 +21,7 @@ #include "../mem/heap.h" #include "../utils/types.h" -char *dirlist(const char *directory, const char *pattern) +char *dirlist(const char *directory, const char *pattern, bool includeHiddenFiles) { u8 max_entries = 61; @@ -40,7 +40,7 @@ char *dirlist(const char *directory, const char *pattern) res = f_readdir(&dir, &fno); if (res || !fno.fname[0]) break; - if (!(fno.fattrib & AM_DIR)) + if (!(fno.fattrib & AM_DIR) && (fno.fname[0] != '.') && (includeHiddenFiles || !(fno.fattrib & AM_HID))) { memcpy(dir_entries + (k * 256), fno.fname, strlen(fno.fname) + 1); k++; @@ -54,7 +54,7 @@ char *dirlist(const char *directory, const char *pattern) { do { - if (!(fno.fattrib & AM_DIR)) + if (!(fno.fattrib & AM_DIR) && (fno.fname[0] != '.') && (includeHiddenFiles || !(fno.fattrib & AM_HID))) { memcpy(dir_entries + (k * 256), fno.fname, strlen(fno.fname) + 1); k++; diff --git a/bootloader/utils/dirlist.h b/bootloader/utils/dirlist.h index 23ac4da..4fb9af7 100644 --- a/bootloader/utils/dirlist.h +++ b/bootloader/utils/dirlist.h @@ -16,4 +16,4 @@ #include "../utils/types.h" -char *dirlist(const char *directory, const char *pattern); +char *dirlist(const char *directory, const char *pattern, bool includeHiddenFiles);