]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
.ventoyignore also works in F2 browser mode.
authorlongpanda <admin@ventoy.net>
Thu, 30 Jun 2022 15:28:14 +0000 (23:28 +0800)
committerlongpanda <admin@ventoy.net>
Thu, 30 Jun 2022 15:28:14 +0000 (23:28 +0800)
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_browser.c

index 7b4cf966c38c5a8a73f7c41d4880b311ccdbff89..785e4978679e4f46ab9630bb6fbf9f8533ad5ecb 100644 (file)
@@ -171,6 +171,11 @@ static int ventoy_browser_iterate_partition(struct grub_disk *disk, const grub_p
 
     fs->fs_label(dev, &Label);
 
 
     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", 
     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;
 }
 
     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;
 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;
         }
 
             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)
         {
         node = grub_zalloc(sizeof(browser_node));
         if (!node)
         {