change code to match old info file structure to avoid crashes with old info files

if firmware is numbered from 1, one entry will be missing
This commit is contained in:
AndresSM 2014-03-03 01:57:18 -05:00
parent 08fadaaf8c
commit dea3f1ca1f
2 changed files with 16 additions and 10 deletions

View File

@ -57,6 +57,8 @@ static void core_info_list_resolve_all_firmware(core_info_list_t *core_info_list
{
size_t i;
unsigned c;
for (i = 0; i < core_info_list->count; i++)
{
core_info_t *info = &core_info_list->list[i];
@ -71,7 +73,8 @@ static void core_info_list_resolve_all_firmware(core_info_list_t *core_info_list
info->firmware = (core_info_firmware_t*)calloc(count, sizeof(*info->firmware));
if (!info->firmware)
continue;
for (c = 0; c < count; c++)
{
char path_key[64], desc_key[64];
@ -81,6 +84,7 @@ static void core_info_list_resolve_all_firmware(core_info_list_t *core_info_list
config_get_string(info->data, path_key, &info->firmware[c].path);
config_get_string(info->data, desc_key, &info->firmware[c].desc);
}
}
}
@ -359,18 +363,17 @@ void core_info_list_update_missing_firmware(core_info_list_t *core_info_list,
size_t i;
char path[PATH_MAX];
core_info_firmware_t *firmware = NULL;
core_info_t *info = find_core_info(core_info_list, core);
if (!info)
return;
firmware = info->firmware;
for (i = 0; i < info->firmware_count; i++)
{
fill_pathname_join(path, systemdir, info->firmware[i].path, sizeof(path));
info->firmware[i].missing = !path_file_exists(path);
if(info->firmware[i].path)
{
fill_pathname_join(path, systemdir, info->firmware[i].path, sizeof(path));
info->firmware[i].missing = !path_file_exists(path);
}
}
}
@ -391,7 +394,7 @@ void core_info_list_get_missing_firmware(core_info_list_t *core_info_list,
*firmware = info->firmware;
for (i = 0; i < info->firmware_count; i++)
for (i = 1; i < info->firmware_count; i++)
{
fill_pathname_join(path, systemdir, info->firmware[i].path, sizeof(path));
info->firmware[i].missing = !path_file_exists(path);

View File

@ -1949,8 +1949,11 @@ void menu_populate_entries(void *data, unsigned menu_type)
file_list_push(rgui->selection_buf, "Required firmware:", RGUI_SETTINGS_CORE_INFO_NONE, 0);
for(i=0;i<rgui->core_info_current.firmware_count;i++)
{
snprintf(tmp, sizeof(tmp), " Name: %s, %s", rgui->core_info_current.firmware[i].desc ? rgui->core_info_current.firmware[i].desc : "",rgui->core_info_current.firmware[i].missing ? "missing" : "present");
file_list_push(rgui->selection_buf, tmp, RGUI_SETTINGS_CORE_INFO_NONE, 0);
if(rgui->core_info_current.firmware[i].desc)
{
snprintf(tmp, sizeof(tmp), " Name: %s, %s", rgui->core_info_current.firmware[i].desc ? rgui->core_info_current.firmware[i].desc : "",rgui->core_info_current.firmware[i].missing ? "missing" : "present");
file_list_push(rgui->selection_buf, tmp, RGUI_SETTINGS_CORE_INFO_NONE, 0);
}
}
}
if(rgui->core_info_current.notes)