mirror of https://github.com/ventoy/Ventoy.git
Fix the boot issue for Fedora/CentOS when file name contains special character (e.g. '(' ) #2360
This commit is contained in:
parent
0961ce5624
commit
84b2ee7ee3
|
@ -125,6 +125,7 @@ fi
|
|||
|
||||
#iso-scan (currently only for Fedora)
|
||||
if $GREP -q Fedora /etc/os-release; then
|
||||
if /ventoy/tool/vtoydump -a /ventoy/ventoy_os_param; then
|
||||
if ventoy_iso_scan_check; then
|
||||
echo "iso_scan process ..." >> $VTLOG
|
||||
|
||||
|
@ -139,6 +140,7 @@ if $GREP -q Fedora /etc/os-release; then
|
|||
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/types.h>
|
||||
|
@ -444,6 +445,29 @@ static int vtoy_vlnk_printf(ventoy_os_param *param, char *diskname)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int vtoy_check_iso_path_alpnum(ventoy_os_param *param)
|
||||
{
|
||||
char c;
|
||||
int i = 0;
|
||||
|
||||
while (param->vtoy_img_path[i])
|
||||
{
|
||||
c = param->vtoy_img_path[i];
|
||||
|
||||
if (isalnum(c) || c == '_' || c == '-')
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vtoy_check_device(ventoy_os_param *param, const char *device)
|
||||
{
|
||||
unsigned long long size;
|
||||
|
@ -560,6 +584,7 @@ int vtoydump_main(int argc, char **argv)
|
|||
int rc;
|
||||
int ch;
|
||||
int print_path = 0;
|
||||
int check_ascii = 0;
|
||||
int print_fs = 0;
|
||||
int vlnk_print = 0;
|
||||
char filename[256] = {0};
|
||||
|
@ -567,7 +592,7 @@ int vtoydump_main(int argc, char **argv)
|
|||
char device[64] = {0};
|
||||
ventoy_os_param *param = NULL;
|
||||
|
||||
while ((ch = getopt(argc, argv, "c:f:p:t:s:v::")) != -1)
|
||||
while ((ch = getopt(argc, argv, "a:c:f:p:t:s:v::")) != -1)
|
||||
{
|
||||
if (ch == 'f')
|
||||
{
|
||||
|
@ -586,6 +611,11 @@ int vtoydump_main(int argc, char **argv)
|
|||
print_path = 1;
|
||||
strncpy(filename, optarg, sizeof(filename) - 1);
|
||||
}
|
||||
else if (ch == 'a')
|
||||
{
|
||||
check_ascii = 1;
|
||||
strncpy(filename, optarg, sizeof(filename) - 1);
|
||||
}
|
||||
else if (ch == 't')
|
||||
{
|
||||
vlnk_print = 1;
|
||||
|
@ -660,6 +690,10 @@ int vtoydump_main(int argc, char **argv)
|
|||
{
|
||||
rc = vtoy_check_device(param, device);
|
||||
}
|
||||
else if (check_ascii)
|
||||
{
|
||||
rc = vtoy_check_iso_path_alpnum(param);
|
||||
}
|
||||
else
|
||||
{
|
||||
// print os param, you can change the output format in the function
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue