cpio_newc_header *g_ventoy_initrd_head = NULL;
grub_uint8_t *g_ventoy_runtime_buf = NULL;
+int g_plugin_image_list = 0;
+
ventoy_grub_param *g_grub_param = NULL;
ventoy_guid g_ventoy_guid = VENTOY_GUID;
{
return 0;
}
-
+
+ if (g_plugin_image_list)
+ {
+ grub_snprintf(g_img_swap_tmp_buf, sizeof(g_img_swap_tmp_buf), "%s%s", node->dir, filename);
+ if (ventoy_plugin_check_image_list(g_img_swap_tmp_buf) == 0)
+ {
+ return 0;
+ }
+ }
+
img = grub_zalloc(sizeof(img_info));
if (img)
{
img_info *minimg = NULL;
img_info *img = (img_info *)(node->firstiso);
- while (img && (img_iterator_node *)(img->parent) == node)
+ if (g_plugin_image_list)
{
- if (img->select == 0 && (NULL == minimg || ventoy_cmp_img(img, minimg) < 0))
+ while (img && (img_iterator_node *)(img->parent) == node)
{
- minimg = img;
+ if (img->select == 0)
+ {
+ minimg = img;
+ break;
+ }
+ img = img->next;
+ }
+ }
+ else
+ {
+ while (img && (img_iterator_node *)(img->parent) == node)
+ {
+ if (img->select == 0 && (NULL == minimg || ventoy_cmp_img(img, minimg) < 0))
+ {
+ minimg = img;
+ }
+ img = img->next;
}
- img = img->next;
}
if (minimg)
img_iterator_node *Minchild = NULL;
img_iterator_node *child = node->firstchild;
- while (child && child->parent == node)
+ if (g_plugin_image_list)
+ {
+ while (child && child->parent == node)
+ {
+ if (child->select == 0)
+ {
+ Minchild = child;
+ break;
+ }
+ child = child->next;
+ }
+ }
+ else
{
- if (child->select == 0 && (NULL == Minchild || ventoy_cmp_subdir(child->dir, Minchild->dir) < 0))
+ while (child && child->parent == node)
{
- Minchild = child;
+ if (child->select == 0 && (NULL == Minchild || ventoy_cmp_subdir(child->dir, Minchild->dir) < 0))
+ {
+ Minchild = child;
+ }
+ child = child->next;
}
- child = child->next;
}
if (Minchild)
grub_snprintf(g_iso_path, sizeof(g_iso_path), "%s", args[0]);
strdata = ventoy_get_env("VTOY_DEFAULT_SEARCH_ROOT");
- if (strdata && strdata[0] == '/')
+ if (0 == g_plugin_image_list && strdata && strdata[0] == '/')
{
len = grub_snprintf(g_img_iterator_head.dir, sizeof(g_img_iterator_head.dir) - 1, "%s", strdata);
if (g_img_iterator_head.dir[len - 1] != '/')
node = tmp;
}
- /* sort image list by image name */
- for (cur = g_ventoy_img_list; cur; cur = cur->next)
+ /* sort image list by image name if image_list is not set in ventoy.json */
+ if (0 == g_plugin_image_list)
{
- for (tail = cur->next; tail; tail = tail->next)
+ for (cur = g_ventoy_img_list; cur; cur = cur->next)
{
- if (ventoy_cmp_img(cur, tail) > 0)
+ for (tail = cur->next; tail; tail = tail->next)
{
- ventoy_swap_img(cur, tail);
+ if (ventoy_cmp_img(cur, tail) > 0)
+ {
+ ventoy_swap_img(cur, tail);
+ }
}
}
}