+grub_err_t ventoy_cmd_select_theme_cfg(grub_extcmd_context_t ctxt, int argc, char **args)
+{
+ int pos = 0;
+ int bufsize = 0;
+ char *name = NULL;
+ char *buf = NULL;
+ theme_list *node = NULL;
+
+ (void)argc;
+ (void)args;
+ (void)ctxt;
+
+ if (g_theme_single_file[0])
+ {
+ return 0;
+ }
+
+ if (g_theme_num < 2)
+ {
+ return 0;
+ }
+
+ bufsize = (g_theme_num + 1) * 1024;
+ buf = grub_malloc(bufsize);
+ if (!buf)
+ {
+ return 0;
+ }
+
+ for (node = g_theme_head; node; node = node->next)
+ {
+ name = grub_strstr(node->theme.path, ")/");
+ if (name)
+ {
+ name++;
+ }
+ else
+ {
+ name = node->theme.path;
+ }
+
+ pos += grub_snprintf(buf + pos, bufsize - pos,
+ "menuentry \"%s\" --class=debug_theme_item --class=debug_theme_select --class=F5tool {\n"
+ "vt_set_theme_path \"%s\"\n"
+ "}\n",
+ name, node->theme.path);
+ }
+
+ pos += grub_snprintf(buf + pos, bufsize - pos,
+ "menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {\n"
+ "echo 'Return ...'\n"
+ "}\n");
+
+ grub_script_execute_sourcecode(buf);
+ grub_free(buf);
+
+ return 0;
+}
+