mirror of
https://github.com/libretro/RetroArch
synced 2025-04-16 08:43:10 +00:00
String cleanups (#14304)
(retroarch.c) retroarch_get_capabilities - get rid of strlcat party in RARCH_CAPABILITIES_CPU, do simple manual assignment for concatenation instead and NULL terminate at the end (menu_displaylist.c) Do something about some of the unnecessarily huge local strings of PATH_MAX_LENGTH size (can be as large as 8192) (menu_displaylist.c) Replace some trivial strlcats / snprintfs (D3D10/D3D11/D3D12) Strings don't need to be initialized - strlcpy already null-terminates - get rid of some constants
This commit is contained in:
parent
d3f3c58e61
commit
a9157f975e
@ -910,10 +910,7 @@ static void check_proc_acpi_sysfs_ac_adapter(const char * node, bool *have_ac)
|
|||||||
int64_t length = 0;
|
int64_t length = 0;
|
||||||
char *buf = NULL;
|
char *buf = NULL;
|
||||||
const char *base = proc_acpi_sysfs_ac_adapter_path;
|
const char *base = proc_acpi_sysfs_ac_adapter_path;
|
||||||
|
fill_pathname_join_special(path, base, "online", sizeof(path));
|
||||||
path[0] = '\0';
|
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "%s/%s", base, "online");
|
|
||||||
if (!filestream_exists(path))
|
if (!filestream_exists(path))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -1788,7 +1785,7 @@ static void frontend_unix_get_env(int *argc,
|
|||||||
strlcat(base_path, "/.config/retroarch", sizeof(base_path));
|
strlcat(base_path, "/.config/retroarch", sizeof(base_path));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
strcpy_literal(base_path, "retroarch");
|
strlcpy(base_path, "retroarch", sizeof(base_path));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!string_is_empty(libretro_directory))
|
if (!string_is_empty(libretro_directory))
|
||||||
@ -2804,10 +2801,14 @@ static bool accessibility_speak_unix(int speed,
|
|||||||
else if (speed > 10)
|
else if (speed > 10)
|
||||||
speed = 10;
|
speed = 10;
|
||||||
|
|
||||||
strcpy_literal(voice_out, "-v");
|
voice_out[0] = '-';
|
||||||
|
voice_out[1] = 'v';
|
||||||
|
voice_out[2] = '\0';
|
||||||
strlcat(voice_out, language, 5);
|
strlcat(voice_out, language, 5);
|
||||||
|
|
||||||
strcpy_literal(speed_out, "-s");
|
speed_out[0] = '-';
|
||||||
|
speed_out[1] = 's';
|
||||||
|
speed_out[2] = '\0';
|
||||||
strlcat(speed_out, speeds[speed-1], 6);
|
strlcat(speed_out, speeds[speed-1], 6);
|
||||||
|
|
||||||
if (priority < 10 && speak_pid > 0)
|
if (priority < 10 && speak_pid > 0)
|
||||||
|
@ -466,18 +466,16 @@ static bool d3d10_gfx_set_shader(void* data, enum rarch_shader_type type, const
|
|||||||
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d10_vertex_t, texcoord),
|
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d10_vertex_t, texcoord),
|
||||||
D3D10_INPUT_PER_VERTEX_DATA, 0 },
|
D3D10_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
};
|
};
|
||||||
static const char vs_ext[] = ".vs.hlsl";
|
char vs_path[PATH_MAX_LENGTH];
|
||||||
static const char ps_ext[] = ".ps.hlsl";
|
char ps_path[PATH_MAX_LENGTH];
|
||||||
char vs_path[PATH_MAX_LENGTH] = {0};
|
const char *slang_path = d3d10->shader_preset->pass[i].source.path;
|
||||||
char ps_path[PATH_MAX_LENGTH] = {0};
|
const char *vs_src = d3d10->shader_preset->pass[i].source.string.vertex;
|
||||||
const char* slang_path = d3d10->shader_preset->pass[i].source.path;
|
const char *ps_src = d3d10->shader_preset->pass[i].source.string.fragment;
|
||||||
const char* vs_src = d3d10->shader_preset->pass[i].source.string.vertex;
|
|
||||||
const char* ps_src = d3d10->shader_preset->pass[i].source.string.fragment;
|
|
||||||
|
|
||||||
strlcpy(vs_path, slang_path, sizeof(vs_path));
|
strlcpy(vs_path, slang_path, sizeof(vs_path));
|
||||||
strlcpy(ps_path, slang_path, sizeof(ps_path));
|
strlcpy(ps_path, slang_path, sizeof(ps_path));
|
||||||
strlcat(vs_path, vs_ext, sizeof(vs_path));
|
strlcat(vs_path, ".vs.hlsl", sizeof(vs_path));
|
||||||
strlcat(ps_path, ps_ext, sizeof(ps_path));
|
strlcat(ps_path, ".ps.hlsl", sizeof(ps_path));
|
||||||
|
|
||||||
if (!d3d10_init_shader(
|
if (!d3d10_init_shader(
|
||||||
d3d10->device, vs_src, 0, vs_path, "main", NULL, NULL, desc, countof(desc),
|
d3d10->device, vs_src, 0, vs_path, "main", NULL, NULL, desc, countof(desc),
|
||||||
|
@ -640,18 +640,16 @@ static bool d3d11_gfx_set_shader(void* data, enum rarch_shader_type type, const
|
|||||||
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d11_vertex_t, texcoord),
|
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d11_vertex_t, texcoord),
|
||||||
D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
D3D11_INPUT_PER_VERTEX_DATA, 0 },
|
||||||
};
|
};
|
||||||
static const char vs_ext[] = ".vs.hlsl";
|
char vs_path[PATH_MAX_LENGTH];
|
||||||
static const char ps_ext[] = ".ps.hlsl";
|
char ps_path[PATH_MAX_LENGTH];
|
||||||
char vs_path[PATH_MAX_LENGTH] = {0};
|
const char *slang_path = d3d11->shader_preset->pass[i].source.path;
|
||||||
char ps_path[PATH_MAX_LENGTH] = {0};
|
const char *vs_src = d3d11->shader_preset->pass[i].source.string.vertex;
|
||||||
const char* slang_path = d3d11->shader_preset->pass[i].source.path;
|
const char *ps_src = d3d11->shader_preset->pass[i].source.string.fragment;
|
||||||
const char* vs_src = d3d11->shader_preset->pass[i].source.string.vertex;
|
|
||||||
const char* ps_src = d3d11->shader_preset->pass[i].source.string.fragment;
|
|
||||||
|
|
||||||
strlcpy(vs_path, slang_path, sizeof(vs_path));
|
strlcpy(vs_path, slang_path, sizeof(vs_path));
|
||||||
strlcpy(ps_path, slang_path, sizeof(ps_path));
|
strlcpy(ps_path, slang_path, sizeof(ps_path));
|
||||||
strlcat(vs_path, vs_ext, sizeof(vs_path));
|
strlcat(vs_path, ".vs.hlsl", sizeof(vs_path));
|
||||||
strlcat(ps_path, ps_ext, sizeof(ps_path));
|
strlcat(ps_path, ".ps.hlsl", sizeof(ps_path));
|
||||||
|
|
||||||
if (!d3d11_init_shader(
|
if (!d3d11_init_shader(
|
||||||
d3d11->device, vs_src, 0, vs_path, "main", NULL, NULL, desc, countof(desc),
|
d3d11->device, vs_src, 0, vs_path, "main", NULL, NULL, desc, countof(desc),
|
||||||
|
@ -687,21 +687,18 @@ static bool d3d12_gfx_set_shader(void* data, enum rarch_shader_type type, const
|
|||||||
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d12_vertex_t, texcoord),
|
{ "TEXCOORD", 1, DXGI_FORMAT_R32G32_FLOAT, 0, offsetof(d3d12_vertex_t, texcoord),
|
||||||
D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
|
D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA, 0 },
|
||||||
};
|
};
|
||||||
static const char vs_ext[] = ".vs.hlsl";
|
char vs_path[PATH_MAX_LENGTH];
|
||||||
static const char ps_ext[] = ".ps.hlsl";
|
char ps_path[PATH_MAX_LENGTH];
|
||||||
char vs_path[PATH_MAX_LENGTH] = {0};
|
const char *slang_path = d3d12->shader_preset->pass[i].source.path;
|
||||||
char ps_path[PATH_MAX_LENGTH] = {0};
|
const char *vs_src = d3d12->shader_preset->pass[i].source.string.vertex;
|
||||||
const char* slang_path = d3d12->shader_preset->pass[i].source.path;
|
const char *ps_src = d3d12->shader_preset->pass[i].source.string.fragment;
|
||||||
const char* vs_src = d3d12->shader_preset->pass[i].source.string.vertex;
|
|
||||||
const char* ps_src = d3d12->shader_preset->pass[i].source.string.fragment;
|
|
||||||
|
|
||||||
strlcpy(vs_path, slang_path, sizeof(vs_path));
|
strlcpy(vs_path, slang_path, sizeof(vs_path));
|
||||||
strlcpy(ps_path, slang_path, sizeof(ps_path));
|
strlcpy(ps_path, slang_path, sizeof(ps_path));
|
||||||
strlcat(vs_path, vs_ext, sizeof(vs_path));
|
strlcat(vs_path, ".vs.hlsl", sizeof(vs_path));
|
||||||
strlcat(ps_path, ps_ext, sizeof(ps_path));
|
strlcat(ps_path, ".ps.hlsl", sizeof(ps_path));
|
||||||
|
|
||||||
if (!d3d_compile(vs_src, 0, vs_path,"main","vs_5_0", &vs_code)){ }
|
if (!d3d_compile(vs_src, 0, vs_path, "main", "vs_5_0", &vs_code)){ }
|
||||||
if (!d3d_compile(ps_src, 0, ps_path,"main","ps_5_0", &ps_code)){ }
|
if (!d3d_compile(ps_src, 0, ps_path, "main", "ps_5_0", &ps_code)){ }
|
||||||
|
|
||||||
desc.BlendState.RenderTarget[0].RenderTargetWriteMask = D3D12_COLOR_WRITE_ENABLE_ALL;
|
desc.BlendState.RenderTarget[0].RenderTargetWriteMask = D3D12_COLOR_WRITE_ENABLE_ALL;
|
||||||
if (i == d3d12->shader_preset->passes - 1)
|
if (i == d3d12->shader_preset->passes - 1)
|
||||||
|
@ -1516,12 +1516,19 @@ static unsigned menu_displaylist_parse_supported_cores(menu_displaylist_info_t *
|
|||||||
* to the displaylist */
|
* to the displaylist */
|
||||||
if (core_is_pending)
|
if (core_is_pending)
|
||||||
{
|
{
|
||||||
|
size_t _len;
|
||||||
char entry_alt_text[256];
|
char entry_alt_text[256];
|
||||||
entry_alt_text[0] = '\0';
|
_len = strlcpy(entry_alt_text,
|
||||||
|
msg_hash_to_str(
|
||||||
snprintf(entry_alt_text, sizeof(entry_alt_text), "%s (%s)",
|
MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE),
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_DETECT_CORE_LIST_OK_CURRENT_CORE),
|
sizeof(entry_alt_text));
|
||||||
pending_core_name);
|
entry_alt_text[_len ] = ' ';
|
||||||
|
entry_alt_text[_len+1] = '(';
|
||||||
|
entry_alt_text[_len+2] = '\0';
|
||||||
|
_len = strlcat(entry_alt_text,
|
||||||
|
pending_core_name, sizeof(entry_alt_text));
|
||||||
|
entry_alt_text[_len ] = ')';
|
||||||
|
entry_alt_text[_len+1] = '\0';
|
||||||
|
|
||||||
menu_entries_prepend(info->list, pending_core_path,
|
menu_entries_prepend(info->list, pending_core_path,
|
||||||
msg_hash_to_str(current_core_enum_label),
|
msg_hash_to_str(current_core_enum_label),
|
||||||
@ -1630,11 +1637,13 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list)
|
|||||||
const char *tmp_string = NULL;
|
const char *tmp_string = NULL;
|
||||||
const frontend_ctx_driver_t *frontend = frontend_get_ptr();
|
const frontend_ctx_driver_t *frontend = frontend_get_ptr();
|
||||||
const char *menu_driver = menu_driver_ident();
|
const char *menu_driver = menu_driver_ident();
|
||||||
|
size_t _len = strlcpy(tmp,
|
||||||
tmp[0] = '\0';
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE),
|
||||||
|
sizeof(tmp));
|
||||||
snprintf(tmp, sizeof(tmp), "%s: %s",
|
tmp[_len ] = ':';
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_BUILD_DATE), __DATE__);
|
tmp[_len+1] = ' ';
|
||||||
|
tmp[_len+2] = '\0';
|
||||||
|
strlcat(tmp, __DATE__, sizeof(tmp));
|
||||||
|
|
||||||
if (menu_entries_append_enum(list, tmp, "",
|
if (menu_entries_append_enum(list, tmp, "",
|
||||||
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||||
@ -1657,18 +1666,17 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
retroarch_get_capabilities(RARCH_CAPABILITIES_COMPILER, tmp, sizeof(tmp));
|
retroarch_get_capabilities(RARCH_CAPABILITIES_COMPILER, tmp, sizeof(tmp), 0);
|
||||||
if (menu_entries_append_enum(list, tmp, "",
|
if (menu_entries_append_enum(list, tmp, "",
|
||||||
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
perms = test_permissions(internal_storage_path);
|
perms = test_permissions(internal_storage_path);
|
||||||
|
strlcpy(tmp,
|
||||||
snprintf(tmp, sizeof(tmp), "%s",
|
|
||||||
perms
|
perms
|
||||||
? msg_hash_to_str(MSG_READ_WRITE)
|
? msg_hash_to_str(MSG_READ_WRITE)
|
||||||
: msg_hash_to_str(MSG_READ_ONLY));
|
: msg_hash_to_str(MSG_READ_ONLY), sizeof(tmp));
|
||||||
if (menu_entries_append_enum(list, tmp, "",
|
if (menu_entries_append_enum(list, tmp, "",
|
||||||
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||||
count++;
|
count++;
|
||||||
@ -1695,51 +1703,54 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list)
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char cpu_str[NAME_MAX_LENGTH];
|
char cpu_str[128];
|
||||||
size_t len = strlcpy(cpu_str,
|
size_t len = strlcpy(cpu_str,
|
||||||
msg_hash_to_str(
|
msg_hash_to_str(
|
||||||
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES),
|
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_CPU_FEATURES),
|
||||||
sizeof(cpu_str));
|
sizeof(cpu_str));
|
||||||
cpu_str[len ] = ':';
|
cpu_str[len++] = ':';
|
||||||
cpu_str[len+1] = ' ';
|
cpu_str[len++] = ' ';
|
||||||
cpu_str[len+2] = '\0';
|
cpu_str[len+1] = '\0';
|
||||||
|
|
||||||
retroarch_get_capabilities(RARCH_CAPABILITIES_CPU,
|
retroarch_get_capabilities(RARCH_CAPABILITIES_CPU,
|
||||||
cpu_str, sizeof(cpu_str));
|
cpu_str, sizeof(cpu_str), len);
|
||||||
if (menu_entries_append_enum(list, cpu_str, "",
|
if (menu_entries_append_enum(list, cpu_str, "",
|
||||||
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char cpu_str[8192];
|
size_t len;
|
||||||
char cpu_arch_str[PATH_MAX_LENGTH];
|
char cpu_str[256];
|
||||||
char cpu_text_str[PATH_MAX_LENGTH];
|
char cpu_arch_str[64];
|
||||||
|
char cpu_text_str[128];
|
||||||
strlcpy(cpu_text_str,
|
strlcpy(cpu_text_str,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CPU_ARCHITECTURE),
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CPU_ARCHITECTURE),
|
||||||
sizeof(cpu_text_str));
|
sizeof(cpu_text_str));
|
||||||
|
|
||||||
frontend_driver_get_cpu_architecture_str(
|
frontend_driver_get_cpu_architecture_str(cpu_arch_str,
|
||||||
cpu_arch_str, sizeof(cpu_arch_str));
|
sizeof(cpu_arch_str));
|
||||||
|
|
||||||
strlcpy(cpu_str, cpu_text_str, sizeof(cpu_str));
|
len = strlcpy(cpu_str, cpu_text_str, sizeof(cpu_str));
|
||||||
strlcat(cpu_str, ": ", sizeof(cpu_str));
|
cpu_str[len ] = ':';
|
||||||
|
cpu_str[len+1] = ' ';
|
||||||
|
cpu_str[len+2] = '\0';
|
||||||
strlcat(cpu_str, cpu_arch_str, sizeof(cpu_str));
|
strlcat(cpu_str, cpu_arch_str, sizeof(cpu_str));
|
||||||
|
|
||||||
if (menu_entries_append_enum(list, cpu_str,
|
if (menu_entries_append_enum(list, cpu_str,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_CPU_ARCHITECTURE),
|
msg_hash_to_str(MENU_ENUM_LABEL_CPU_ARCHITECTURE),
|
||||||
MENU_ENUM_LABEL_CPU_ARCHITECTURE, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
MENU_ENUM_LABEL_CPU_ARCHITECTURE,
|
||||||
|
MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char cpu_str[PATH_MAX_LENGTH];
|
char cpu_str[64];
|
||||||
unsigned amount_cores = cpu_features_get_core_amount();
|
unsigned amount_cores = cpu_features_get_core_amount();
|
||||||
|
|
||||||
cpu_str[0] = '\0';
|
cpu_str[0] = '\0';
|
||||||
|
|
||||||
snprintf(cpu_str, sizeof(cpu_str),
|
snprintf(cpu_str, sizeof(cpu_str),
|
||||||
"%s %d\n", msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CPU_CORES), amount_cores);
|
"%s %d\n",
|
||||||
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CPU_CORES), amount_cores);
|
||||||
if (menu_entries_append_enum(list, cpu_str,
|
if (menu_entries_append_enum(list, cpu_str,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_CPU_CORES),
|
msg_hash_to_str(MENU_ENUM_LABEL_CPU_CORES),
|
||||||
MENU_ENUM_LABEL_CPU_CORES, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
MENU_ENUM_LABEL_CPU_CORES, MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||||
@ -1764,18 +1775,22 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list)
|
|||||||
#ifdef HAVE_RGUI
|
#ifdef HAVE_RGUI
|
||||||
if (string_is_equal(menu_driver, "rgui"))
|
if (string_is_equal(menu_driver, "rgui"))
|
||||||
{
|
{
|
||||||
snprintf(tmp, sizeof(tmp), " Device display name: %s",
|
strlcpy(tmp, " Device display name: ", sizeof(tmp));
|
||||||
|
strlcat(tmp,
|
||||||
input_config_get_device_display_name(controller) ?
|
input_config_get_device_display_name(controller) ?
|
||||||
input_config_get_device_display_name(controller) :
|
input_config_get_device_display_name(controller) :
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE));
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE),
|
||||||
|
sizeof(tmp));
|
||||||
if (menu_entries_append_enum(list, tmp, "",
|
if (menu_entries_append_enum(list, tmp, "",
|
||||||
MENU_ENUM_LABEL_SYSTEM_INFO_CONTROLLER_ENTRY,
|
MENU_ENUM_LABEL_SYSTEM_INFO_CONTROLLER_ENTRY,
|
||||||
MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||||
count++;
|
count++;
|
||||||
snprintf(tmp, sizeof(tmp), " Device config name: %s",
|
strlcpy(tmp, " Device config name: ", sizeof(tmp));
|
||||||
|
strlcat(tmp,
|
||||||
input_config_get_device_config_name(controller) ?
|
input_config_get_device_config_name(controller) ?
|
||||||
input_config_get_device_config_name(controller) :
|
input_config_get_device_config_name(controller) :
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE));
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE),
|
||||||
|
sizeof(tmp));
|
||||||
if (menu_entries_append_enum(list, tmp, "",
|
if (menu_entries_append_enum(list, tmp, "",
|
||||||
MENU_ENUM_LABEL_SYSTEM_INFO_CONTROLLER_ENTRY,
|
MENU_ENUM_LABEL_SYSTEM_INFO_CONTROLLER_ENTRY,
|
||||||
MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
MENU_SETTINGS_CORE_INFO_NONE, 0, 0))
|
||||||
@ -1795,14 +1810,15 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list)
|
|||||||
if (frontend)
|
if (frontend)
|
||||||
{
|
{
|
||||||
size_t len;
|
size_t len;
|
||||||
char tmp2[PATH_MAX_LENGTH];
|
char tmp2[128];
|
||||||
int major = 0;
|
int major = 0;
|
||||||
int minor = 0;
|
int minor = 0;
|
||||||
|
|
||||||
tmp2[0] = '\0';
|
tmp2[0] = '\0';
|
||||||
|
|
||||||
len = strlcpy(tmp,
|
len = strlcpy(tmp,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER),
|
msg_hash_to_str(
|
||||||
|
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_FRONTEND_IDENTIFIER),
|
||||||
sizeof(tmp));
|
sizeof(tmp));
|
||||||
tmp[len ] = ':';
|
tmp[len ] = ':';
|
||||||
tmp[len+1] = ' ';
|
tmp[len+1] = ' ';
|
||||||
@ -1866,7 +1882,8 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list)
|
|||||||
if (frontend->get_rating)
|
if (frontend->get_rating)
|
||||||
{
|
{
|
||||||
snprintf(tmp, sizeof(tmp), "%s : %d",
|
snprintf(tmp, sizeof(tmp), "%s : %d",
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL),
|
msg_hash_to_str(
|
||||||
|
MENU_ENUM_LABEL_VALUE_SYSTEM_INFO_RETRORATING_LEVEL),
|
||||||
frontend->get_rating());
|
frontend->get_rating());
|
||||||
if (menu_entries_append_enum(list, tmp, "",
|
if (menu_entries_append_enum(list, tmp, "",
|
||||||
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY,
|
MENU_ENUM_LABEL_SYSTEM_INFO_ENTRY,
|
||||||
@ -1875,7 +1892,7 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list)
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char tmp[PATH_MAX_LENGTH];
|
char tmp[128];
|
||||||
uint64_t memory_total = frontend_driver_get_total_memory();
|
uint64_t memory_total = frontend_driver_get_total_memory();
|
||||||
uint64_t memory_used = memory_total - frontend_driver_get_free_memory();
|
uint64_t memory_used = memory_total - frontend_driver_get_free_memory();
|
||||||
|
|
||||||
@ -1901,7 +1918,7 @@ static unsigned menu_displaylist_parse_system_info(file_list_t *list)
|
|||||||
if (frontend->get_powerstate)
|
if (frontend->get_powerstate)
|
||||||
{
|
{
|
||||||
int seconds = 0, percent = 0;
|
int seconds = 0, percent = 0;
|
||||||
char tmp2[PATH_MAX_LENGTH];
|
char tmp2[128];
|
||||||
enum frontend_powerstate state =
|
enum frontend_powerstate state =
|
||||||
frontend->get_powerstate(&seconds, &percent);
|
frontend->get_powerstate(&seconds, &percent);
|
||||||
|
|
||||||
@ -2218,7 +2235,7 @@ static int menu_displaylist_parse_playlist(menu_displaylist_info_t *info,
|
|||||||
|
|
||||||
for (i = 0; i < list_size; i++)
|
for (i = 0; i < list_size; i++)
|
||||||
{
|
{
|
||||||
char menu_entry_label[PATH_MAX_LENGTH];
|
char menu_entry_label[256];
|
||||||
const struct playlist_entry *entry = NULL;
|
const struct playlist_entry *entry = NULL;
|
||||||
const char *entry_path = NULL;
|
const char *entry_path = NULL;
|
||||||
bool entry_valid = true;
|
bool entry_valid = true;
|
||||||
@ -2326,7 +2343,6 @@ static int create_string_list_rdb_entry_string(
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
attr.i = 0;
|
attr.i = 0;
|
||||||
tmp[0] = '\0';
|
|
||||||
|
|
||||||
str_len += strlen(label) + 1;
|
str_len += strlen(label) + 1;
|
||||||
string_list_append(&str_list, label, attr);
|
string_list_append(&str_list, label, attr);
|
||||||
@ -2337,9 +2353,7 @@ static int create_string_list_rdb_entry_string(
|
|||||||
str_len += strlen(path) + 1;
|
str_len += strlen(path) + 1;
|
||||||
string_list_append(&str_list, path, attr);
|
string_list_append(&str_list, path, attr);
|
||||||
|
|
||||||
output_label = (char*)calloc(str_len, sizeof(char));
|
if (!(output_label = (char*)calloc(str_len, sizeof(char))))
|
||||||
|
|
||||||
if (!output_label)
|
|
||||||
{
|
{
|
||||||
string_list_deinitialize(&str_list);
|
string_list_deinitialize(&str_list);
|
||||||
return -1;
|
return -1;
|
||||||
@ -2406,11 +2420,21 @@ static int create_string_list_rdb_entry_int(
|
|||||||
|
|
||||||
static enum msg_file_type extension_to_file_hash_type(const char *ext)
|
static enum msg_file_type extension_to_file_hash_type(const char *ext)
|
||||||
{
|
{
|
||||||
if (string_is_equal(ext, "sha1"))
|
if ( ext[0] == 's'
|
||||||
|
&& ext[1] == 'h'
|
||||||
|
&& ext[2] == 'a'
|
||||||
|
&& ext[3] == '1'
|
||||||
|
&& ext[4] == '\0')
|
||||||
return FILE_TYPE_SHA1;
|
return FILE_TYPE_SHA1;
|
||||||
else if (string_is_equal(ext, "crc"))
|
else if ( ext[0] == 'c'
|
||||||
|
&& ext[1] == 'r'
|
||||||
|
&& ext[2] == 'c'
|
||||||
|
&& ext[3] == '\0')
|
||||||
return FILE_TYPE_CRC;
|
return FILE_TYPE_CRC;
|
||||||
else if (string_is_equal(ext, "md5"))
|
else if ( ext[0] == 'm'
|
||||||
|
&& ext[1] == 'd'
|
||||||
|
&& ext[2] == '5'
|
||||||
|
&& ext[3] == '\0')
|
||||||
return FILE_TYPE_MD5;
|
return FILE_TYPE_MD5;
|
||||||
return FILE_TYPE_NONE;
|
return FILE_TYPE_NONE;
|
||||||
}
|
}
|
||||||
@ -4306,7 +4330,7 @@ static unsigned menu_displaylist_parse_cores(
|
|||||||
if (type == FILE_TYPE_CORE)
|
if (type == FILE_TYPE_CORE)
|
||||||
{
|
{
|
||||||
char core_path[PATH_MAX_LENGTH];
|
char core_path[PATH_MAX_LENGTH];
|
||||||
char display_name[PATH_MAX_LENGTH];
|
char display_name[256];
|
||||||
display_name[0] = '\0';
|
display_name[0] = '\0';
|
||||||
|
|
||||||
fill_pathname_join_special(core_path, dir, path, sizeof(core_path));
|
fill_pathname_join_special(core_path, dir, path, sizeof(core_path));
|
||||||
@ -4609,7 +4633,7 @@ static unsigned menu_displaylist_parse_content_information(
|
|||||||
menu_displaylist_info_t *info)
|
menu_displaylist_info_t *info)
|
||||||
{
|
{
|
||||||
char tmp[8192];
|
char tmp[8192];
|
||||||
char core_name[PATH_MAX_LENGTH];
|
char core_name[256];
|
||||||
playlist_t *playlist = playlist_get_cached();
|
playlist_t *playlist = playlist_get_cached();
|
||||||
unsigned idx = menu->rpl_entry_selection_ptr;
|
unsigned idx = menu->rpl_entry_selection_ptr;
|
||||||
const struct playlist_entry *entry = NULL;
|
const struct playlist_entry *entry = NULL;
|
||||||
@ -4740,12 +4764,13 @@ static unsigned menu_displaylist_parse_content_information(
|
|||||||
|
|
||||||
if (!string_is_empty(db_name_no_ext))
|
if (!string_is_empty(db_name_no_ext))
|
||||||
{
|
{
|
||||||
tmp[0] = '\0';
|
size_t _len = strlcpy(tmp,
|
||||||
snprintf(tmp, sizeof(tmp),
|
|
||||||
"%s: %s",
|
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_DATABASE),
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_DATABASE),
|
||||||
db_name_no_ext
|
sizeof(tmp));
|
||||||
);
|
tmp[_len ] = ':';
|
||||||
|
tmp[_len+1] = ' ';
|
||||||
|
tmp[_len+2] = '\0';
|
||||||
|
strlcat(tmp, db_name_no_ext, sizeof(tmp));
|
||||||
if (menu_entries_append_enum(info->list, tmp,
|
if (menu_entries_append_enum(info->list, tmp,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_INFO_DATABASE),
|
msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_INFO_DATABASE),
|
||||||
MENU_ENUM_LABEL_CONTENT_INFO_DATABASE,
|
MENU_ENUM_LABEL_CONTENT_INFO_DATABASE,
|
||||||
@ -4758,6 +4783,7 @@ static unsigned menu_displaylist_parse_content_information(
|
|||||||
* contentless operation, skip label/path entries */
|
* contentless operation, skip label/path entries */
|
||||||
if (!(core_supports_no_game && string_is_empty(content_path)))
|
if (!(core_supports_no_game && string_is_empty(content_path)))
|
||||||
{
|
{
|
||||||
|
size_t _len;
|
||||||
/* If content label is empty, create it from the path */
|
/* If content label is empty, create it from the path */
|
||||||
if (string_is_empty(content_label))
|
if (string_is_empty(content_label))
|
||||||
{
|
{
|
||||||
@ -4768,14 +4794,16 @@ static unsigned menu_displaylist_parse_content_information(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Content label */
|
/* Content label */
|
||||||
tmp[0] = '\0';
|
_len = strlcpy(tmp,
|
||||||
snprintf(tmp, sizeof(tmp),
|
|
||||||
"%s: %s",
|
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_LABEL),
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_LABEL),
|
||||||
!string_is_empty(content_label)
|
sizeof(tmp));
|
||||||
|
tmp[_len ] = ':';
|
||||||
|
tmp[_len+1] = ' ';
|
||||||
|
tmp[_len+2] = '\0';
|
||||||
|
strlcat(tmp, !string_is_empty(content_label)
|
||||||
? content_label
|
? content_label
|
||||||
: msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE)
|
: msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE),
|
||||||
);
|
sizeof(tmp));
|
||||||
if (menu_entries_append_enum(info->list, tmp,
|
if (menu_entries_append_enum(info->list, tmp,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_INFO_LABEL),
|
msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_INFO_LABEL),
|
||||||
MENU_ENUM_LABEL_CONTENT_INFO_LABEL,
|
MENU_ENUM_LABEL_CONTENT_INFO_LABEL,
|
||||||
@ -4783,13 +4811,16 @@ static unsigned menu_displaylist_parse_content_information(
|
|||||||
count++;
|
count++;
|
||||||
|
|
||||||
/* Content path */
|
/* Content path */
|
||||||
tmp[0] = '\0';
|
_len = strlcpy(tmp,
|
||||||
snprintf(tmp, sizeof(tmp),
|
|
||||||
"%s: %s",
|
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_PATH),
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_PATH),
|
||||||
!string_is_empty(content_path)
|
sizeof(tmp));
|
||||||
|
tmp[_len ] = ':';
|
||||||
|
tmp[_len+1] = ' ';
|
||||||
|
tmp[_len+2] = '\0';
|
||||||
|
strlcat(tmp,!string_is_empty(content_path)
|
||||||
? content_path
|
? content_path
|
||||||
: msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE)
|
: msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NOT_AVAILABLE),
|
||||||
|
sizeof(tmp)
|
||||||
);
|
);
|
||||||
if (menu_entries_append_enum(info->list, tmp,
|
if (menu_entries_append_enum(info->list, tmp,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_INFO_PATH),
|
msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_INFO_PATH),
|
||||||
@ -4802,12 +4833,13 @@ static unsigned menu_displaylist_parse_content_information(
|
|||||||
if (!string_is_empty(core_name) &&
|
if (!string_is_empty(core_name) &&
|
||||||
!string_is_equal(core_name, "DETECT"))
|
!string_is_equal(core_name, "DETECT"))
|
||||||
{
|
{
|
||||||
tmp[0] = '\0';
|
size_t _len = strlcpy(tmp,
|
||||||
snprintf(tmp, sizeof(tmp),
|
|
||||||
"%s: %s",
|
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_CORE_NAME),
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_CORE_NAME),
|
||||||
core_name
|
sizeof(tmp));
|
||||||
);
|
tmp[_len ] = ':';
|
||||||
|
tmp[_len+1] = ' ';
|
||||||
|
tmp[_len+2] = '\0';
|
||||||
|
strlcat(tmp, core_name, sizeof(tmp));
|
||||||
if (menu_entries_append_enum(info->list, tmp,
|
if (menu_entries_append_enum(info->list, tmp,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_INFO_CORE_NAME),
|
msg_hash_to_str(MENU_ENUM_LABEL_CONTENT_INFO_CORE_NAME),
|
||||||
MENU_ENUM_LABEL_CONTENT_INFO_CORE_NAME,
|
MENU_ENUM_LABEL_CONTENT_INFO_CORE_NAME,
|
||||||
@ -4866,12 +4898,13 @@ static unsigned menu_displaylist_parse_content_information(
|
|||||||
if (settings->bools.cheevos_enable && settings->arrays.cheevos_token[0] &&
|
if (settings->bools.cheevos_enable && settings->arrays.cheevos_token[0] &&
|
||||||
!string_is_empty(loaded_content_path))
|
!string_is_empty(loaded_content_path))
|
||||||
{
|
{
|
||||||
tmp[0] = '\0';
|
size_t _len = strlcpy(tmp,
|
||||||
snprintf(tmp, sizeof(tmp),
|
|
||||||
"%s: %s",
|
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_CHEEVOS_HASH),
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_CHEEVOS_HASH),
|
||||||
rcheevos_get_hash()
|
sizeof(tmp));
|
||||||
);
|
tmp[_len ] = ':';
|
||||||
|
tmp[_len+1] = ' ';
|
||||||
|
tmp[_len+2] = '\n';
|
||||||
|
strlcat(tmp, rcheevos_get_hash(), sizeof(tmp));
|
||||||
if (menu_entries_append_enum(info->list, tmp,
|
if (menu_entries_append_enum(info->list, tmp,
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_CHEEVOS_HASH),
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_CONTENT_INFO_CHEEVOS_HASH),
|
||||||
MENU_ENUM_LABEL_VALUE_CONTENT_INFO_CHEEVOS_HASH,
|
MENU_ENUM_LABEL_VALUE_CONTENT_INFO_CHEEVOS_HASH,
|
||||||
@ -5226,22 +5259,23 @@ static int menu_displaylist_parse_input_description_list(
|
|||||||
if (!string_is_empty(input_desc_btn))
|
if (!string_is_empty(input_desc_btn))
|
||||||
{
|
{
|
||||||
char input_description[256];
|
char input_description[256];
|
||||||
|
|
||||||
input_description[0] = '\0';
|
|
||||||
|
|
||||||
/* > Up to RARCH_FIRST_CUSTOM_BIND, inputs
|
/* > Up to RARCH_FIRST_CUSTOM_BIND, inputs
|
||||||
* are buttons - description can be used
|
* are buttons - description can be used
|
||||||
* directly
|
* directly
|
||||||
* > Above RARCH_FIRST_CUSTOM_BIND, inputs
|
* > Above RARCH_FIRST_CUSTOM_BIND, inputs
|
||||||
* are analog axes - have to add +/-
|
* are analog axes - have to add +/-
|
||||||
* indicators */
|
* indicators */
|
||||||
if (i < RARCH_FIRST_CUSTOM_BIND)
|
size_t _len = strlcpy(input_description, input_desc_btn,
|
||||||
strlcpy(input_description, input_desc_btn,
|
|
||||||
sizeof(input_description));
|
sizeof(input_description));
|
||||||
|
if (i >= RARCH_FIRST_CUSTOM_BIND)
|
||||||
|
{
|
||||||
|
input_description [_len ] = ' ';
|
||||||
|
if ((i % 2) == 0)
|
||||||
|
input_description[_len+1] = '+';
|
||||||
else
|
else
|
||||||
snprintf(input_description, sizeof(input_description),
|
input_description[_len+1] = '-';
|
||||||
"%s %c", input_desc_btn,
|
input_description [_len+2] = '\0';
|
||||||
((i % 2) == 0) ? '+' : '-');
|
}
|
||||||
|
|
||||||
if (string_is_empty(input_description))
|
if (string_is_empty(input_description))
|
||||||
continue;
|
continue;
|
||||||
@ -5401,9 +5435,9 @@ static int menu_displaylist_parse_input_description_kbd_list(
|
|||||||
/* Loop over keyboard keys */
|
/* Loop over keyboard keys */
|
||||||
for (i = 0; i < RARCH_MAX_KEYS; i++)
|
for (i = 0; i < RARCH_MAX_KEYS; i++)
|
||||||
{
|
{
|
||||||
|
char input_description[256];
|
||||||
unsigned key_id = key_descriptors[i].key;
|
unsigned key_id = key_descriptors[i].key;
|
||||||
const char *key_label = key_descriptors[i].desc;
|
const char *key_label = key_descriptors[i].desc;
|
||||||
char input_description[256];
|
|
||||||
|
|
||||||
if (string_is_empty(key_label))
|
if (string_is_empty(key_label))
|
||||||
continue;
|
continue;
|
||||||
@ -5411,12 +5445,16 @@ static int menu_displaylist_parse_input_description_kbd_list(
|
|||||||
/* TODO/FIXME: Localise 'Keyboard' */
|
/* TODO/FIXME: Localise 'Keyboard' */
|
||||||
if (key_id == RETROK_FIRST)
|
if (key_id == RETROK_FIRST)
|
||||||
{
|
{
|
||||||
input_description[0] = '\0';
|
input_description[0] = '-';
|
||||||
strcpy_literal(input_description, "---");
|
input_description[1] = '-';
|
||||||
|
input_description[2] = '-';
|
||||||
|
input_description[3] = '\0';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
snprintf(input_description, sizeof(input_description),
|
{
|
||||||
"Keyboard %s", key_label);
|
strlcpy(input_description, "Keyboard ", sizeof(input_description));
|
||||||
|
strlcat(input_description, key_label, sizeof(input_description));
|
||||||
|
}
|
||||||
|
|
||||||
/* Add menu entry */
|
/* Add menu entry */
|
||||||
if (menu_entries_append_enum(info->list,
|
if (menu_entries_append_enum(info->list,
|
||||||
@ -5469,11 +5507,7 @@ static void menu_displaylist_parse_playlist_generic(
|
|||||||
menu_displaylist_set_new_playlist(menu, settings,
|
menu_displaylist_set_new_playlist(menu, settings,
|
||||||
playlist_path, sort_enabled);
|
playlist_path, sort_enabled);
|
||||||
|
|
||||||
playlist = playlist_get_cached();
|
if ((playlist = playlist_get_cached()))
|
||||||
|
|
||||||
if (!playlist)
|
|
||||||
return;
|
|
||||||
|
|
||||||
*ret = menu_displaylist_parse_playlist(info,
|
*ret = menu_displaylist_parse_playlist(info,
|
||||||
playlist, settings, playlist_name, is_collection);
|
playlist, settings, playlist_name, is_collection);
|
||||||
}
|
}
|
||||||
@ -5897,8 +5931,13 @@ static unsigned menu_displaylist_populate_subsystem(
|
|||||||
/* Select appropriate 'star' marker for subsystem menu entries
|
/* Select appropriate 'star' marker for subsystem menu entries
|
||||||
* (i.e. RGUI does not support unicode, so use a 'standard'
|
* (i.e. RGUI does not support unicode, so use a 'standard'
|
||||||
* character fallback) */
|
* character fallback) */
|
||||||
snprintf(star_char, sizeof(star_char),
|
if (is_rgui)
|
||||||
"%s", is_rgui ? "*" : utf8_star_char);
|
{
|
||||||
|
star_char[0] = '*';
|
||||||
|
star_char[1] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
strlcpy(star_char, utf8_star_char, sizeof(star_char));
|
||||||
|
|
||||||
if (menu_displaylist_has_subsystems())
|
if (menu_displaylist_has_subsystems())
|
||||||
{
|
{
|
||||||
@ -6008,9 +6047,7 @@ static unsigned menu_displaylist_populate_subsystem(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
snprintf(s, sizeof(s),
|
snprintf(s, sizeof(s),"Load %s", subsystem->desc);
|
||||||
"Load %s",
|
|
||||||
subsystem->desc);
|
|
||||||
|
|
||||||
/* If using RGUI with sublabels disabled, add the
|
/* If using RGUI with sublabels disabled, add the
|
||||||
* appropriate text to the menu entry itself... */
|
* appropriate text to the menu entry itself... */
|
||||||
@ -7230,11 +7267,16 @@ unsigned menu_displaylist_build_list(
|
|||||||
{
|
{
|
||||||
/* On/off key strings may be required,
|
/* On/off key strings may be required,
|
||||||
* so populate them... */
|
* so populate them... */
|
||||||
snprintf(on_string, sizeof(on_string), ".%s",
|
on_string [0] = '.';
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON));
|
on_string [1] = '\0';
|
||||||
|
off_string[0] = '.';
|
||||||
snprintf(off_string, sizeof(off_string), ".%s",
|
off_string[1] = '\0';
|
||||||
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF));
|
strlcat(on_string,
|
||||||
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_ON),
|
||||||
|
sizeof(on_string));
|
||||||
|
strlcat(off_string,
|
||||||
|
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF),
|
||||||
|
sizeof(off_string));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -10532,7 +10574,6 @@ unsigned menu_displaylist_netplay_refresh_rooms(file_list_t *list)
|
|||||||
{
|
{
|
||||||
if (!show_passworded)
|
if (!show_passworded)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
snprintf(passworded, sizeof(passworded), "[%s] ",
|
snprintf(passworded, sizeof(passworded), "[%s] ",
|
||||||
msg_hash_to_str(MSG_ROOM_PASSWORDED));
|
msg_hash_to_str(MSG_ROOM_PASSWORDED));
|
||||||
}
|
}
|
||||||
@ -10936,9 +10977,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
|||||||
{
|
{
|
||||||
const struct retro_keybind *keyptr =
|
const struct retro_keybind *keyptr =
|
||||||
&input_config_binds[port][retro_id];
|
&input_config_binds[port][retro_id];
|
||||||
|
size_t _len = strlcpy(desc_label,
|
||||||
snprintf(desc_label, sizeof(desc_label),
|
msg_hash_to_str(keyptr->enum_idx),
|
||||||
"%s %s", msg_hash_to_str(keyptr->enum_idx), descriptor);
|
sizeof(desc_label));
|
||||||
|
desc_label[_len ] = ' ';
|
||||||
|
desc_label[_len+1] = '\0';
|
||||||
|
strlcat(desc_label, descriptor, sizeof(desc_label));
|
||||||
strlcpy(descriptor, desc_label, sizeof(descriptor));
|
strlcpy(descriptor, desc_label, sizeof(descriptor));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10988,9 +11032,12 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
|||||||
{
|
{
|
||||||
const struct retro_keybind *keyptr =
|
const struct retro_keybind *keyptr =
|
||||||
&input_config_binds[port][retro_id];
|
&input_config_binds[port][retro_id];
|
||||||
|
size_t _len = strlcpy(desc_label,
|
||||||
snprintf(desc_label, sizeof(desc_label),
|
msg_hash_to_str(keyptr->enum_idx),
|
||||||
"%s %s", msg_hash_to_str(keyptr->enum_idx), descriptor);
|
sizeof(desc_label));
|
||||||
|
desc_label[_len ] = ' ';
|
||||||
|
desc_label[_len+1] = '\0';
|
||||||
|
strlcat(desc_label, descriptor, sizeof(desc_label));
|
||||||
strlcpy(descriptor, desc_label, sizeof(descriptor));
|
strlcpy(descriptor, desc_label, sizeof(descriptor));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11086,7 +11133,8 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type,
|
|||||||
if (!string_is_empty(cd_info.system))
|
if (!string_is_empty(cd_info.system))
|
||||||
{
|
{
|
||||||
char system[256];
|
char system[256];
|
||||||
snprintf(system, sizeof(system), "System: %s", cd_info.system);
|
strlcpy(system, "System: ", sizeof(system));
|
||||||
|
strlcat(system, cd_info.system, sizeof(system));
|
||||||
|
|
||||||
if (menu_entries_append_enum(info->list,
|
if (menu_entries_append_enum(info->list,
|
||||||
system,
|
system,
|
||||||
|
175
retroarch.c
175
retroarch.c
@ -4095,7 +4095,7 @@ static void retroarch_print_version(void)
|
|||||||
#else
|
#else
|
||||||
printf("\n");
|
printf("\n");
|
||||||
#endif
|
#endif
|
||||||
retroarch_get_capabilities(RARCH_CAPABILITIES_COMPILER, str, sizeof(str));
|
retroarch_get_capabilities(RARCH_CAPABILITIES_COMPILER, str, sizeof(str), 0);
|
||||||
strlcat(str, " Built: " __DATE__, sizeof(str));
|
strlcat(str, " Built: " __DATE__, sizeof(str));
|
||||||
fprintf(stdout, "%s\n", str);
|
fprintf(stdout, "%s\n", str);
|
||||||
}
|
}
|
||||||
@ -5265,9 +5265,7 @@ bool retroarch_main_init(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
char str_output[256];
|
char str_output[256];
|
||||||
char str[128];
|
char str[128];
|
||||||
str[0] = '\0';
|
retroarch_get_capabilities(RARCH_CAPABILITIES_CPU, str, sizeof(str), 0);
|
||||||
|
|
||||||
retroarch_get_capabilities(RARCH_CAPABILITIES_CPU, str, sizeof(str));
|
|
||||||
|
|
||||||
#ifdef HAVE_GIT_VERSION
|
#ifdef HAVE_GIT_VERSION
|
||||||
snprintf(str_output, sizeof(str_output),
|
snprintf(str_output, sizeof(str_output),
|
||||||
@ -5906,7 +5904,7 @@ bool retroarch_override_setting_is_set(
|
|||||||
}
|
}
|
||||||
|
|
||||||
int retroarch_get_capabilities(enum rarch_capabilities type,
|
int retroarch_get_capabilities(enum rarch_capabilities type,
|
||||||
char *s, size_t len)
|
char *s, size_t len, size_t _len)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
@ -5915,43 +5913,170 @@ int retroarch_get_capabilities(enum rarch_capabilities type,
|
|||||||
uint64_t cpu = cpu_features_get();
|
uint64_t cpu = cpu_features_get();
|
||||||
|
|
||||||
if (cpu & RETRO_SIMD_MMX)
|
if (cpu & RETRO_SIMD_MMX)
|
||||||
strlcat(s, " MMX", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'M';
|
||||||
|
s[_len++] = 'M';
|
||||||
|
s[_len++] = 'X';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_MMXEXT)
|
if (cpu & RETRO_SIMD_MMXEXT)
|
||||||
strlcat(s, " MMXEXT", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'M';
|
||||||
|
s[_len++] = 'M';
|
||||||
|
s[_len++] = 'X';
|
||||||
|
s[_len++] = 'E';
|
||||||
|
s[_len++] = 'X';
|
||||||
|
s[_len++] = 'T';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_SSE)
|
if (cpu & RETRO_SIMD_SSE)
|
||||||
strlcat(s, " SSE", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'E';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_SSE2)
|
if (cpu & RETRO_SIMD_SSE2)
|
||||||
strlcat(s, " SSE2", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'E';
|
||||||
|
s[_len++] = '2';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_SSE3)
|
if (cpu & RETRO_SIMD_SSE3)
|
||||||
strlcat(s, " SSE3", len);
|
{
|
||||||
if (cpu & RETRO_SIMD_SSSE3)
|
s[_len++] = ' ';
|
||||||
strlcat(s, " SSSE3", len);
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'E';
|
||||||
|
s[_len++] = '3';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_SSE4)
|
if (cpu & RETRO_SIMD_SSE4)
|
||||||
strlcat(s, " SSE4", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'E';
|
||||||
|
s[_len++] = '4';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_SSE42)
|
if (cpu & RETRO_SIMD_SSE42)
|
||||||
strlcat(s, " SSE4.2", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'E';
|
||||||
|
s[_len++] = '4';
|
||||||
|
s[_len++] = '.';
|
||||||
|
s[_len++] = '2';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_AES)
|
if (cpu & RETRO_SIMD_AES)
|
||||||
strlcat(s, " AES", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'A';
|
||||||
|
s[_len++] = 'E';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_AVX)
|
if (cpu & RETRO_SIMD_AVX)
|
||||||
strlcat(s, " AVX", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'A';
|
||||||
|
s[_len++] = 'V';
|
||||||
|
s[_len++] = 'X';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_AVX2)
|
if (cpu & RETRO_SIMD_AVX2)
|
||||||
strlcat(s, " AVX2", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'A';
|
||||||
|
s[_len++] = 'V';
|
||||||
|
s[_len++] = 'X';
|
||||||
|
s[_len++] = '2';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_NEON)
|
if (cpu & RETRO_SIMD_NEON)
|
||||||
strlcat(s, " NEON", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'N';
|
||||||
|
s[_len++] = 'E';
|
||||||
|
s[_len++] = 'O';
|
||||||
|
s[_len++] = 'N';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_VFPV3)
|
if (cpu & RETRO_SIMD_VFPV3)
|
||||||
strlcat(s, " VFPv3", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'V';
|
||||||
|
s[_len++] = 'F';
|
||||||
|
s[_len++] = 'P';
|
||||||
|
s[_len++] = 'v';
|
||||||
|
s[_len++] = '3';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_VFPV4)
|
if (cpu & RETRO_SIMD_VFPV4)
|
||||||
strlcat(s, " VFPv4", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'V';
|
||||||
|
s[_len++] = 'F';
|
||||||
|
s[_len++] = 'P';
|
||||||
|
s[_len++] = 'v';
|
||||||
|
s[_len++] = '4';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_VMX)
|
if (cpu & RETRO_SIMD_VMX)
|
||||||
strlcat(s, " VMX", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'V';
|
||||||
|
s[_len++] = 'M';
|
||||||
|
s[_len++] = 'X';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_VMX128)
|
if (cpu & RETRO_SIMD_VMX128)
|
||||||
strlcat(s, " VMX128", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'V';
|
||||||
|
s[_len++] = 'M';
|
||||||
|
s[_len++] = 'X';
|
||||||
|
s[_len++] = '1';
|
||||||
|
s[_len++] = '2';
|
||||||
|
s[_len++] = '8';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_VFPU)
|
if (cpu & RETRO_SIMD_VFPU)
|
||||||
strlcat(s, " VFPU", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'V';
|
||||||
|
s[_len++] = 'F';
|
||||||
|
s[_len++] = 'P';
|
||||||
|
s[_len++] = 'U';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_PS)
|
if (cpu & RETRO_SIMD_PS)
|
||||||
strlcat(s, " PS", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'P';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
if (cpu & RETRO_SIMD_ASIMD)
|
if (cpu & RETRO_SIMD_ASIMD)
|
||||||
strlcat(s, " ASIMD", len);
|
{
|
||||||
|
s[_len++] = ' ';
|
||||||
|
s[_len++] = 'A';
|
||||||
|
s[_len++] = 'S';
|
||||||
|
s[_len++] = 'I';
|
||||||
|
s[_len++] = 'M';
|
||||||
|
s[_len++] = 'D';
|
||||||
|
s[_len+1] = '\0';
|
||||||
|
}
|
||||||
|
s[_len++] = '\0';
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RARCH_CAPABILITIES_COMPILER:
|
case RARCH_CAPABILITIES_COMPILER:
|
||||||
|
@ -88,7 +88,7 @@ RETRO_BEGIN_DECLS
|
|||||||
bool retroarch_ctl(enum rarch_ctl_state state, void *data);
|
bool retroarch_ctl(enum rarch_ctl_state state, void *data);
|
||||||
|
|
||||||
int retroarch_get_capabilities(enum rarch_capabilities type,
|
int retroarch_get_capabilities(enum rarch_capabilities type,
|
||||||
char *s, size_t len);
|
char *s, size_t len, size_t _len);
|
||||||
|
|
||||||
void retroarch_override_setting_set(enum rarch_override_setting enum_idx, void *data);
|
void retroarch_override_setting_set(enum rarch_override_setting enum_idx, void *data);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user