NULL
};
-static const char *g_ventoy_help_lang[] =
-{
- "de_DE", "en_US", "fr_FR", "hr_HR", "id_ID", "pt_PT", "sr_CY", "sr_SR", "tr_TR", "zh_CN",
-
- NULL
-};
+static char g_ventoy_help_lang[MAX_LANGUAGE][8];
static char g_pub_path[2 * MAX_PATH];
static data_control g_data_control[bios_max + 1];
//read clear
VTOY_JSON_FMT_SINT("syntax_error", g_sysinfo.syntax_error);
g_sysinfo.syntax_error = 0;
+
+ VTOY_JSON_FMT_SINT("invalid_config", g_sysinfo.invalid_config);
+ g_sysinfo.invalid_config = 0;
#if defined(_MSC_VER) || defined(WIN32)
data1->filter_vhd != data2->filter_vhd ||
data1->filter_vtoy != data2->filter_vtoy ||
data1->win11_bypass_check != data2->win11_bypass_check ||
+ data1->linux_remount != data2->linux_remount ||
data1->menu_timeout != data2->menu_timeout)
{
return 1;
VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_FILE_FLT_VHD", filter_vhd);
VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_FILE_FLT_VTOY", filter_vtoy);
VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_WIN11_BYPASS_CHECK", win11_bypass_check);
+ VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_LINUX_REMOUNT", linux_remount);
VTOY_JSON_FMT_CTRL_INT(L2, "VTOY_MENU_TIMEOUT", menu_timeout);
VTOY_JSON_FMT_CTRL_STRN(L2, "VTOY_DEFAULT_KBD_LAYOUT", default_kbd_layout);
VTOY_JSON_FMT_SINT("filter_vhd", ctrl->filter_vhd);
VTOY_JSON_FMT_SINT("filter_vtoy", ctrl->filter_vtoy);
VTOY_JSON_FMT_SINT("win11_bypass_check", ctrl->win11_bypass_check);
+ VTOY_JSON_FMT_SINT("linux_remount", ctrl->linux_remount);
VTOY_JSON_FMT_SINT("menu_timeout", ctrl->menu_timeout);
VTOY_JSON_FMT_STRN("default_kbd_layout", ctrl->default_kbd_layout);
VTOY_JSON_FMT_STRN("help_text_language", ctrl->help_text_language);
VTOY_JSON_FMT_KEY("help_list");
VTOY_JSON_FMT_ARY_BEGIN();
- for (i = 0; g_ventoy_help_lang[i]; i++)
+ for (i = 0; g_ventoy_help_lang[i][0]; i++)
{
VTOY_JSON_FMT_ITEM(g_ventoy_help_lang[i]);
}
VTOY_JSON_INT("filter_vhd", ctrl->filter_vhd);
VTOY_JSON_INT("filter_vtoy", ctrl->filter_vtoy);
VTOY_JSON_INT("win11_bypass_check", ctrl->win11_bypass_check);
+ VTOY_JSON_INT("linux_remount", ctrl->linux_remount);
VTOY_JSON_INT("menu_timeout", ctrl->menu_timeout);
VTOY_JSON_STR("default_image", ctrl->default_image);
{
CONTROL_PARSE_INT(child, data->win11_bypass_check);
}
+ else if (strcmp(child->pcName, "VTOY_LINUX_REMOUNT") == 0)
+ {
+ CONTROL_PARSE_INT(child, data->linux_remount);
+ }
else if (strcmp(child->pcName, "VTOY_TREE_VIEW_MENU_STYLE") == 0)
{
CONTROL_PARSE_INT(child, data->treeview_style);
}
else if (strcmp(child->pcName, "VTOY_HELP_TXT_LANGUAGE") == 0)
{
- for (i = 0; g_ventoy_help_lang[i]; i++)
+ for (i = 0; g_ventoy_help_lang[i][0]; i++)
{
if (strcmp(child->unData.pcStrVal, g_ventoy_help_lang[i]) == 0)
{
unsigned char *start = NULL;
VTOY_JSON *json = NULL;
VTOY_JSON *node = NULL;
+ VTOY_JSON *next = NULL;
ret = ventoy_read_file_to_buf(filename, 4, (void **)&buffer, &buflen);
if (ret)
{
vlog("parse ventoy.json success\n");
+ for (node = json->pstChild; node; node = node->pstNext)
+ for (next = node->pstNext; next; next = next->pstNext)
+ {
+ if (node->pcName && next->pcName && strcmp(node->pcName, next->pcName) == 0)
+ {
+ vlog("ventoy.json contains duplicate key <%s>.\n", node->pcName);
+ g_sysinfo.invalid_config = 1;
+ ret = 1;
+ goto end;
+ }
+ }
+
for (node = json->pstChild; node; node = node->pstNext)
{
ventoy_parse_json(control);
ret = 1;
}
+end:
vtoy_json_destroy(json);
free(buffer);
int ventoy_http_init(void)
{
+ int i = 0;
+
+#ifdef VENTOY_SIM
+ char *Buffer = NULL;
+ int BufLen = 0;
+
+ ventoy_read_file_to_buf("www/helplist", 4, (void **)&Buffer, &BufLen);
+ if (Buffer)
+ {
+ for (i = 0; i < BufLen / 5; i++)
+ {
+ memcpy(g_ventoy_help_lang[i], Buffer + i * 5, 5);
+ g_ventoy_help_lang[i][5] = 0;
+ }
+ free(Buffer);
+ }
+#else
+ ventoy_file *file;
+ file = ventoy_tar_find_file("www/helplist");
+ if (file)
+ {
+ for (i = 0; i < file->size / 5; i++)
+ {
+ memcpy(g_ventoy_help_lang[i], (char *)(file->addr) + i * 5, 5);
+ g_ventoy_help_lang[i][5] = 0;
+ }
+ }
+#endif
+
if (!g_pub_json_buffer)
{
g_pub_json_buffer = malloc(JSON_BUF_MAX * 2);
g_pub_save_buffer = g_pub_json_buffer + JSON_BUF_MAX;
- }
+ }
+
pthread_mutex_init(&g_api_mutex, NULL);
return 0;