From 4707022ef9664feff6ddb4a910e5c305429cb08d Mon Sep 17 00:00:00 2001 From: longpanda Date: Fri, 23 Dec 2022 11:42:22 +0800 Subject: [PATCH] Add prompt and wait for key when Ventoy check device failed. (#2094) --- .../grub-2.04/grub-core/ventoy/ventoy_cmd.c | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c index 588e51f7..d4d7d884 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c @@ -497,6 +497,7 @@ static int ventoy_set_check_result(int ret, const char *msg) if (ret) { + grub_cls(); grub_printf(VTOY_WARNING"\n"); grub_printf(VTOY_WARNING"\n"); grub_printf(VTOY_WARNING"\n\n\n"); @@ -504,10 +505,7 @@ static int ventoy_set_check_result(int ret, const char *msg) grub_printf("This is NOT a standard Ventoy device and is NOT supported (%d).\n", ret); grub_printf("Error message: <%s>\n\n", msg); grub_printf("You should follow the instructions in https://www.ventoy.net to use Ventoy.\n"); - - grub_printf("\n\nWill exit after 10 seconds ...... "); grub_refresh(); - grub_sleep(10); } return ret; @@ -4975,6 +4973,7 @@ int ventoy_load_part_table(const char *diskname) static grub_err_t ventoy_cmd_load_part_table(grub_extcmd_context_t ctxt, int argc, char **args) { int ret; + char c; (void)argc; (void)ctxt; @@ -4982,7 +4981,28 @@ static grub_err_t ventoy_cmd_load_part_table(grub_extcmd_context_t ctxt, int arg ret = ventoy_load_part_table(args[0]); if (ret) { - grub_exit(); + grub_printf("\n\nPress r/h/e for the corresponding operation.\n"); + grub_printf(" r --- Reboot\n"); + grub_printf(" h --- Halt\n"); + grub_printf(" e --- Exit grub\n"); + grub_refresh(); + + while (1) + { + c = grub_getkey(); + if (c == 'r') + { + grub_reboot(); + } + else if (c == 'h') + { + grub_script_execute_sourcecode("halt"); + } + else if (c == 'e') + { + grub_exit(); + } + } } g_ventoy_disk_part_size[0] = ventoy_get_vtoy_partsize(0);