mirror of
https://github.com/libretro/RetroArch
synced 2025-03-31 19:21:06 +00:00
Rewrite online updater code to no longer use hashes
This commit is contained in:
parent
94325f9466
commit
94cbeb754e
@ -48,7 +48,7 @@ enum
|
|||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint32_t type_hash;
|
enum menu_hash_enums enum_idx;
|
||||||
char path[PATH_MAX_LENGTH];
|
char path[PATH_MAX_LENGTH];
|
||||||
} menu_file_transfer_t;
|
} menu_file_transfer_t;
|
||||||
|
|
||||||
@ -1555,39 +1555,39 @@ static void cb_generic_download(void *task_data,
|
|||||||
/* we have to determine dir_path at the time of writting or else
|
/* we have to determine dir_path at the time of writting or else
|
||||||
* we'd run into races when the user changes the setting during an
|
* we'd run into races when the user changes the setting during an
|
||||||
* http transfer. */
|
* http transfer. */
|
||||||
switch (transf->type_hash)
|
switch (transf->enum_idx)
|
||||||
{
|
{
|
||||||
case CB_CORE_THUMBNAILS_DOWNLOAD:
|
case MENU_ENUM_LABEL_CB_CORE_THUMBNAILS_DOWNLOAD:
|
||||||
dir_path = settings->directory.thumbnails;
|
dir_path = settings->directory.thumbnails;
|
||||||
break;
|
break;
|
||||||
case CB_CORE_UPDATER_DOWNLOAD:
|
case MENU_ENUM_LABEL_CB_CORE_UPDATER_DOWNLOAD:
|
||||||
dir_path = settings->directory.libretro;
|
dir_path = settings->directory.libretro;
|
||||||
break;
|
break;
|
||||||
case CB_CORE_CONTENT_DOWNLOAD:
|
case MENU_ENUM_LABEL_CB_CORE_CONTENT_DOWNLOAD:
|
||||||
dir_path = settings->directory.core_assets;
|
dir_path = settings->directory.core_assets;
|
||||||
break;
|
break;
|
||||||
case CB_UPDATE_CORE_INFO_FILES:
|
case MENU_ENUM_LABEL_CB_UPDATE_CORE_INFO_FILES:
|
||||||
dir_path = settings->path.libretro_info;
|
dir_path = settings->path.libretro_info;
|
||||||
break;
|
break;
|
||||||
case CB_UPDATE_ASSETS:
|
case MENU_ENUM_LABEL_CB_UPDATE_ASSETS:
|
||||||
dir_path = settings->directory.assets;
|
dir_path = settings->directory.assets;
|
||||||
break;
|
break;
|
||||||
case CB_UPDATE_AUTOCONFIG_PROFILES:
|
case MENU_ENUM_LABEL_CB_UPDATE_AUTOCONFIG_PROFILES:
|
||||||
dir_path = settings->directory.autoconfig;
|
dir_path = settings->directory.autoconfig;
|
||||||
break;
|
break;
|
||||||
case CB_UPDATE_DATABASES:
|
case MENU_ENUM_LABEL_CB_UPDATE_DATABASES:
|
||||||
dir_path = settings->path.content_database;
|
dir_path = settings->path.content_database;
|
||||||
break;
|
break;
|
||||||
case CB_UPDATE_OVERLAYS:
|
case MENU_ENUM_LABEL_CB_UPDATE_OVERLAYS:
|
||||||
dir_path = settings->directory.overlay;
|
dir_path = settings->directory.overlay;
|
||||||
break;
|
break;
|
||||||
case CB_UPDATE_CHEATS:
|
case MENU_ENUM_LABEL_CB_UPDATE_CHEATS:
|
||||||
dir_path = settings->path.cheat_database;
|
dir_path = settings->path.cheat_database;
|
||||||
break;
|
break;
|
||||||
case CB_UPDATE_SHADERS_CG:
|
case MENU_ENUM_LABEL_CB_UPDATE_SHADERS_CG:
|
||||||
case CB_UPDATE_SHADERS_GLSL:
|
case MENU_ENUM_LABEL_CB_UPDATE_SHADERS_GLSL:
|
||||||
{
|
{
|
||||||
const char *dirname = transf->type_hash == CB_UPDATE_SHADERS_CG ?
|
const char *dirname = transf->enum_idx == MENU_ENUM_LABEL_CB_UPDATE_SHADERS_CG ?
|
||||||
"shaders_cg" : "shaders_glsl";
|
"shaders_cg" : "shaders_glsl";
|
||||||
|
|
||||||
fill_pathname_join(shaderdir,
|
fill_pathname_join(shaderdir,
|
||||||
@ -1601,12 +1601,12 @@ static void cb_generic_download(void *task_data,
|
|||||||
dir_path = shaderdir;
|
dir_path = shaderdir;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CB_LAKKA_DOWNLOAD:
|
case MENU_ENUM_LABEL_CB_LAKKA_DOWNLOAD:
|
||||||
dir_path = LAKKA_UPDATE_DIR;
|
dir_path = LAKKA_UPDATE_DIR;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
RARCH_WARN("Unknown transfer type '%u' bailing out.\n",
|
RARCH_WARN("Unknown transfer type '%s' bailing out.\n",
|
||||||
transf->type_hash);
|
menu_hash_to_str_enum(transf->enum_idx));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1651,18 +1651,20 @@ static void cb_generic_download(void *task_data,
|
|||||||
if (string_is_equal_noncase(file_ext, "zip"))
|
if (string_is_equal_noncase(file_ext, "zip"))
|
||||||
{
|
{
|
||||||
if (!task_push_decompress(output_path, dir_path, NULL, NULL, NULL,
|
if (!task_push_decompress(output_path, dir_path, NULL, NULL, NULL,
|
||||||
cb_decompressed, (void*)(uintptr_t)transf->type_hash))
|
cb_decompressed, (void*)(uintptr_t)menu_hash_calculate(menu_hash_to_str_enum(transf->enum_idx))))
|
||||||
{
|
{
|
||||||
err = "Decompression failed.";
|
err = "Decompression failed.";
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
switch (transf->type_hash)
|
switch (transf->enum_idx)
|
||||||
{
|
{
|
||||||
case CB_CORE_UPDATER_DOWNLOAD:
|
case MENU_ENUM_LABEL_CB_CORE_UPDATER_DOWNLOAD:
|
||||||
command_event(CMD_EVENT_CORE_INFO_INIT, NULL);
|
command_event(CMD_EVENT_CORE_INFO_INIT, NULL);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1745,8 +1747,8 @@ static int action_ok_download_generic(const char *path,
|
|||||||
|
|
||||||
fill_pathname_join(s3, s, path, sizeof(s3));
|
fill_pathname_join(s3, s, path, sizeof(s3));
|
||||||
|
|
||||||
transf = (menu_file_transfer_t*)calloc(1, sizeof(*transf));
|
transf = (menu_file_transfer_t*)calloc(1, sizeof(*transf));
|
||||||
transf->type_hash = menu_hash_calculate(menu_hash_to_str_enum(enum_idx));
|
transf->enum_idx = enum_idx;
|
||||||
strlcpy(transf->path, path, sizeof(transf->path));
|
strlcpy(transf->path, path, sizeof(transf->path));
|
||||||
|
|
||||||
task_push_http_transfer(s3, false, menu_hash_to_str_enum(enum_idx), cb_generic_download, transf);
|
task_push_http_transfer(s3, false, menu_hash_to_str_enum(enum_idx), cb_generic_download, transf);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user