mirror of
https://github.com/ventoy/Ventoy.git
synced 2024-12-26 23:25:57 -05:00
Display warning message if ISO file has an invalid size.
This commit is contained in:
parent
61d4248d51
commit
a37c6af8d0
@ -534,6 +534,26 @@ static grub_err_t ventoy_cmd_incr(grub_extcmd_context_t ctxt, int argc, char **a
|
|||||||
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static grub_err_t ventoy_cmd_mod(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
|
{
|
||||||
|
long value1 = 0;
|
||||||
|
long value2 = 0;
|
||||||
|
char buf[32];
|
||||||
|
|
||||||
|
if (argc != 3)
|
||||||
|
{
|
||||||
|
return grub_error(GRUB_ERR_BAD_ARGUMENT, "Usage: %s {Int} {Int} {Variable}", cmd_raw_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
value1 = grub_strtol(args[0], NULL, 10);
|
||||||
|
value2 = grub_strtol(args[1], NULL, 10);
|
||||||
|
|
||||||
|
grub_snprintf(buf, sizeof(buf), "%ld", (value1 % value2));
|
||||||
|
grub_env_set(args[2], buf);
|
||||||
|
|
||||||
|
VENTOY_CMD_RETURN(GRUB_ERR_NONE);
|
||||||
|
}
|
||||||
|
|
||||||
static grub_err_t ventoy_cmd_file_size(grub_extcmd_context_t ctxt, int argc, char **args)
|
static grub_err_t ventoy_cmd_file_size(grub_extcmd_context_t ctxt, int argc, char **args)
|
||||||
{
|
{
|
||||||
int rc = 1;
|
int rc = 1;
|
||||||
@ -3236,14 +3256,15 @@ static grub_err_t ventoy_cmd_parse_volume(grub_extcmd_context_t ctxt, int argc,
|
|||||||
int len;
|
int len;
|
||||||
grub_file_t file;
|
grub_file_t file;
|
||||||
char buf[64];
|
char buf[64];
|
||||||
|
grub_uint64_t size;
|
||||||
ventoy_iso9660_vd pvd;
|
ventoy_iso9660_vd pvd;
|
||||||
|
|
||||||
(void)ctxt;
|
(void)ctxt;
|
||||||
(void)argc;
|
(void)argc;
|
||||||
|
|
||||||
if (argc != 3)
|
if (argc != 4)
|
||||||
{
|
{
|
||||||
return grub_error(GRUB_ERR_BAD_ARGUMENT, "Usage: %s sysid volid \n", cmd_raw_name);
|
return grub_error(GRUB_ERR_BAD_ARGUMENT, "Usage: %s sysid volid space \n", cmd_raw_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
file = ventoy_grub_file_open(VENTOY_FILE_TYPE, "%s", args[0]);
|
file = ventoy_grub_file_open(VENTOY_FILE_TYPE, "%s", args[0]);
|
||||||
@ -3269,6 +3290,11 @@ static grub_err_t ventoy_cmd_parse_volume(grub_extcmd_context_t ctxt, int argc,
|
|||||||
grub_memcpy(buf, pvd.vol, sizeof(pvd.vol));
|
grub_memcpy(buf, pvd.vol, sizeof(pvd.vol));
|
||||||
ventoy_set_env(args[2], buf);
|
ventoy_set_env(args[2], buf);
|
||||||
|
|
||||||
|
size = pvd.space;
|
||||||
|
size *= 2048;
|
||||||
|
grub_snprintf(buf, sizeof(buf), "%llu", (ulonglong)size);
|
||||||
|
ventoy_set_env(args[3], buf);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
grub_file_close(file);
|
grub_file_close(file);
|
||||||
|
|
||||||
@ -4050,6 +4076,7 @@ static int ventoy_env_init(void)
|
|||||||
static cmd_para ventoy_cmds[] =
|
static cmd_para ventoy_cmds[] =
|
||||||
{
|
{
|
||||||
{ "vt_incr", ventoy_cmd_incr, 0, NULL, "{Var} {INT}", "Increase integer variable", NULL },
|
{ "vt_incr", ventoy_cmd_incr, 0, NULL, "{Var} {INT}", "Increase integer variable", NULL },
|
||||||
|
{ "vt_mod", ventoy_cmd_mod, 0, NULL, "{Int} {Int} {Var}", "mod integer variable", NULL },
|
||||||
{ "vt_strstr", ventoy_cmd_strstr, 0, NULL, "", "", NULL },
|
{ "vt_strstr", ventoy_cmd_strstr, 0, NULL, "", "", NULL },
|
||||||
{ "vt_str_begin", ventoy_cmd_strbegin, 0, NULL, "", "", NULL },
|
{ "vt_str_begin", ventoy_cmd_strbegin, 0, NULL, "", "", NULL },
|
||||||
{ "vt_debug", ventoy_cmd_debug, 0, NULL, "{on|off}", "turn debug on/off", NULL },
|
{ "vt_debug", ventoy_cmd_debug, 0, NULL, "{on|off}", "turn debug on/off", NULL },
|
||||||
|
@ -163,6 +163,8 @@ typedef struct ventoy_iso9660_vd
|
|||||||
grub_uint8_t res;
|
grub_uint8_t res;
|
||||||
char sys[32];
|
char sys[32];
|
||||||
char vol[32];
|
char vol[32];
|
||||||
|
grub_uint8_t res2[8];
|
||||||
|
grub_uint32_t space;
|
||||||
}ventoy_iso9660_vd;
|
}ventoy_iso9660_vd;
|
||||||
|
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
|
@ -964,7 +964,19 @@ function iso_common_menuentry {
|
|||||||
unset vt_volume_id
|
unset vt_volume_id
|
||||||
|
|
||||||
vt_chosen_img_path vt_chosen_path vt_chosen_size
|
vt_chosen_img_path vt_chosen_path vt_chosen_size
|
||||||
vt_parse_iso_volume "${vtoy_iso_part}${vt_chosen_path}" vt_system_id vt_volume_id
|
|
||||||
|
vt_parse_iso_volume "${vtoy_iso_part}${vt_chosen_path}" vt_system_id vt_volume_id vt_volume_space
|
||||||
|
if [ $vt_volume_space -ne $vt_chosen_size ]; then
|
||||||
|
vt_mod $vt_chosen_size 2048 vt_chosen_size_mod
|
||||||
|
if [ $vt_volume_space -gt $vt_chosen_size -o $vt_chosen_size_mod -ne 0 ]; then
|
||||||
|
echo -e "\n $vt_volume_space $vt_chosen_size $vt_chosen_size_mod\n"
|
||||||
|
echo -e "\n The size of the iso file \"$vt_chosen_size\" is invalid. File corrupted ?\n"
|
||||||
|
echo -e " 此ISO文件的大小 \"$vt_chosen_size\" 有问题,请确认文件是否损坏。\n"
|
||||||
|
echo -e "\n press ENTER to exit (请按 回车 键返回) ..."
|
||||||
|
read vtInputKey
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if vt_check_password "${vt_chosen_path}"; then
|
if vt_check_password "${vt_chosen_path}"; then
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user