From 0b81845e4208b918dad1e17a625f66b992350117 Mon Sep 17 00:00:00 2001 From: longpanda Date: Thu, 30 Jun 2022 23:28:14 +0800 Subject: [PATCH] .ventoyignore also works in F2 browser mode. --- .../grub-core/ventoy/ventoy_browser.c | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_browser.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_browser.c index 7b4cf966..785e4978 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_browser.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_browser.c @@ -171,6 +171,11 @@ static int ventoy_browser_iterate_partition(struct grub_disk *disk, const grub_p fs->fs_label(dev, &Label); + if (ventoy_check_file_exist("(%s)/.ventoyignore", partname)) + { + return 0; + } + if (g_tree_view_menu_style == 0) { grub_snprintf(title, sizeof(title), "%-10s (%s,%s%d) [%s] %s %s", @@ -311,6 +316,25 @@ static int ventoy_browser_valid_filename(const char *filename, int len, int *typ return 1; } +static int ventoy_browser_check_ignore(const char *device, const char *root, const char *dir) +{ + grub_file_t file; + char fullpath[1024] = {0}; + + grub_snprintf(fullpath, 1023, "(%s)%s/%s/.ventoyignore", device, root, dir); + file = grub_file_open(fullpath, GRUB_FILE_TYPE_NONE); + if (!file) + { + grub_errno = 0; + return 0; + } + else + { + grub_file_close(file); + return 1; + } +} + static int ventoy_browser_iterate_dir(const char *filename, const struct grub_dirhook_info *info, void *data) { int type; @@ -328,6 +352,11 @@ static int ventoy_browser_iterate_dir(const char *filename, const struct grub_di return 0; } + if (ventoy_browser_check_ignore(g_menu_device, g_menu_path_buf, filename)) + { + return 0; + } + node = grub_zalloc(sizeof(browser_node)); if (!node) {