fix supplying default config values

This commit is contained in:
rr- 2021-03-19 01:09:02 +01:00
parent 2a31a98edf
commit 3ed34cb0e2
No known key found for this signature in database
GPG key ID: CC65E6FD28CAE42A
2 changed files with 41 additions and 29 deletions

View file

@ -114,7 +114,7 @@ int8_t T1MReadConfigFromJson(const char *cfg_data)
"failed to parse config file: %s in line %d, char %d", "failed to parse config file: %s in line %d, char %d",
json_get_error_description(parse_result.error), json_get_error_description(parse_result.error),
parse_result.error_line_no, parse_result.error_row_no); parse_result.error_line_no, parse_result.error_row_no);
goto cleanup; // continue to supply the default values
} else { } else {
result = 1; result = 1;
} }

View file

@ -17,6 +17,7 @@
static int32_t S_ReadUserSettingsATI(); static int32_t S_ReadUserSettingsATI();
static int32_t S_ReadUserSettingsT1M(); static int32_t S_ReadUserSettingsT1M();
static int32_t S_ReadUserSettingsT1MFromJson(const char *cfg_data);
static int32_t S_WriteUserSettingsT1M(); static int32_t S_WriteUserSettingsT1M();
static int32_t S_ReadUserSettingsATI() static int32_t S_ReadUserSettingsATI()
@ -52,39 +53,21 @@ static int32_t S_ReadUserSettingsATI()
return 1; return 1;
} }
static int32_t S_ReadUserSettingsT1M() static int32_t S_ReadUserSettingsT1MFromJson(const char *cfg_data)
{ {
int32_t result = 0; int32_t result = 0;
size_t config_data_size;
char *config_data = NULL;
MYFILE *fp = NULL;
struct json_value_s *root = NULL; struct json_value_s *root = NULL;
struct json_parse_result_s parse_result; struct json_parse_result_s parse_result;
fp = FileOpen(T1MUserSettingsPath, FILE_OPEN_READ);
if (!fp) {
goto cleanup;
}
config_data_size = FileSize(fp);
config_data = malloc(config_data_size + 1);
if (!config_data) {
goto cleanup;
}
FileRead(config_data, 1, config_data_size, fp);
config_data[config_data_size] = '\0';
FileClose(fp);
fp = NULL;
root = json_parse_ex( root = json_parse_ex(
config_data, strlen(config_data), json_parse_flags_allow_json5, NULL, cfg_data, strlen(cfg_data), json_parse_flags_allow_json5, NULL, NULL,
NULL, &parse_result); &parse_result);
if (!root) { if (!root) {
TRACE( TRACE(
"failed to parse script file: %s in line %d, char %d", "failed to parse script file: %s in line %d, char %d",
json_get_error_description(parse_result.error), json_get_error_description(parse_result.error),
parse_result.error_line_no, parse_result.error_row_no, config_data); parse_result.error_line_no, parse_result.error_row_no, cfg_data);
goto cleanup; // continue to supply the default values
} }
result = 1; result = 1;
@ -122,15 +105,44 @@ static int32_t S_ReadUserSettingsT1M()
Layout[1][i] = json_array_get_number_int(layout_arr, i, Layout[1][i]); Layout[1][i] = json_array_get_number_int(layout_arr, i, Layout[1][i]);
} }
if (root) {
json_value_free(root);
}
return result;
}
static int32_t S_ReadUserSettingsT1M()
{
int32_t result = 0;
size_t cfg_data_size;
char *cfg_data = NULL;
MYFILE *fp = NULL;
fp = FileOpen(T1MUserSettingsPath, FILE_OPEN_READ);
if (!fp) {
result = S_ReadUserSettingsT1MFromJson("");
goto cleanup;
}
cfg_data_size = FileSize(fp);
cfg_data = malloc(cfg_data_size + 1);
if (!cfg_data) {
result = S_ReadUserSettingsT1MFromJson("");
goto cleanup;
}
FileRead(cfg_data, 1, cfg_data_size, fp);
cfg_data[cfg_data_size] = '\0';
FileClose(fp);
fp = NULL;
result = S_ReadUserSettingsT1MFromJson(cfg_data);
cleanup: cleanup:
if (fp) { if (fp) {
FileClose(fp); FileClose(fp);
} }
if (config_data) { if (cfg_data) {
free(config_data); free(cfg_data);
}
if (root) {
json_value_free(root);
} }
return result; return result;
} }