//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)
VTOY_JSON_FMT_STRN("os", "windows");
#else
VTOY_JSON_FMT_BEGIN(pos, JSON_BUFFER, JSON_BUF_MAX);
VTOY_JSON_FMT_OBJ_BEGIN();
VTOY_JSON_FMT_SINT("status", 0);
+ VTOY_JSON_FMT_SINT("save_error", g_sysinfo.config_save_error);
+ g_sysinfo.config_save_error = 0;
VTOY_JSON_FMT_OBJ_END();
VTOY_JSON_FMT_END(pos);
int ventoy_data_save_image_list(data_image_list *data, const char *title, char *buf, int buflen)
{
int pos = 0;
+ int prelen;
path_node *node = NULL;
+ char newtitle[64];
(void)title;
{
return 0;
}
-
+
+ prelen = (int)strlen("image_list");
+
VTOY_JSON_FMT_BEGIN(pos, buf, buflen);
if (data->type == 0)
{
- VTOY_JSON_FMT_KEY_L(L1, "image_list");
+ scnprintf(newtitle, sizeof(newtitle), "image_list%s", title + prelen);
}
else
{
- VTOY_JSON_FMT_KEY_L(L1, "image_blacklist");
+ scnprintf(newtitle, sizeof(newtitle), "image_blacklist%s", title + prelen);
}
+ VTOY_JSON_FMT_KEY_L(L1, newtitle);
VTOY_JSON_FMT_ARY_BEGIN_N();
if (ret)
{
vlog("Failed to write ventoy.json file.\n");
+ g_sysinfo.config_save_error = 1;
}
return 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);