X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/Ventoy.git/blobdiff_plain/e1c26567a1ec0d7a3b27a0c9c30bb9ee6ffa0c27..58b1bbe0b54dd333d97acf4e57907ec01cf2af41:/Plugson/src/Web/ventoy_http.c?ds=sidebyside diff --git a/Plugson/src/Web/ventoy_http.c b/Plugson/src/Web/ventoy_http.c index 7f17a4b..c24096d 100644 --- a/Plugson/src/Web/ventoy_http.c +++ b/Plugson/src/Web/ventoy_http.c @@ -322,6 +322,9 @@ static int ventoy_api_sysinfo(struct mg_connection *conn, VTOY_JSON *json) //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) @@ -482,7 +485,9 @@ void ventoy_data_default_control(data_control *data) { memset(data, 0, sizeof(data_control)); + data->default_menu_mode = 1; data->filter_dot_underscore = 1; + data->treeview_style = 1; data->max_search_level = -1; data->menu_timeout = 0; @@ -505,6 +510,7 @@ int ventoy_data_cmp_control(data_control *data1, data_control *data2) 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; @@ -549,6 +555,7 @@ int ventoy_data_save_control(data_control *data, const char *title, char *buf, i 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); @@ -593,6 +600,7 @@ int ventoy_data_json_control(data_control *ctrl, char *buf, int buflen) 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); @@ -658,6 +666,7 @@ static int ventoy_api_save_control(struct mg_connection *conn, VTOY_JSON *json) 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); @@ -3790,6 +3799,10 @@ static int ventoy_parse_control(VTOY_JSON *json, void *p) { 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); @@ -4909,6 +4922,7 @@ static int ventoy_load_old_json(const char *filename) 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) @@ -4942,6 +4956,18 @@ static int ventoy_load_old_json(const char *filename) { 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); @@ -4967,6 +4993,7 @@ static int ventoy_load_old_json(const char *filename) ret = 1; } +end: vtoy_json_destroy(json); free(buffer);