mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-16 23:48:51 +00:00
* Remove more strlcat calls
* Safer manual char assignment in database_info.c
This commit is contained in:
parent
bdc398d79f
commit
458fe7a761
@ -5096,12 +5096,12 @@ bool config_save_file(const char *path)
|
||||
|
||||
snprintf(formatted_number, sizeof(formatted_number), "%u", i + 1);
|
||||
|
||||
strlcpy(cfg, "input_device_p", sizeof(cfg));
|
||||
strlcat(cfg, formatted_number, sizeof(cfg));
|
||||
_len = strlcpy(cfg, "input_device_p", sizeof(cfg));
|
||||
strlcpy(cfg + _len, formatted_number, sizeof(cfg) - _len);
|
||||
config_set_int(conf, cfg, settings->uints.input_device[i]);
|
||||
|
||||
strlcpy(cfg, "input_player", sizeof(cfg));
|
||||
_len = strlcat(cfg, formatted_number, sizeof(cfg));
|
||||
_len = strlcpy(cfg, "input_player", sizeof(cfg));
|
||||
_len += strlcpy(cfg + _len, formatted_number, sizeof(cfg) - _len);
|
||||
|
||||
strlcpy(cfg + _len, "_mouse_index", sizeof(cfg) - _len);
|
||||
config_set_int(conf, cfg, settings->uints.input_mouse_index[i]);
|
||||
@ -5417,8 +5417,8 @@ int8_t config_save_overrides(enum override_type type, void *data, bool remove)
|
||||
RARCH_DBG("[Overrides]: %s = \"%u\"\n", cfg, overrides->uints.input_device[i]);
|
||||
}
|
||||
|
||||
strlcpy(cfg, "input_player", sizeof(cfg));
|
||||
_len = strlcat(cfg, formatted_number, sizeof(cfg));
|
||||
_len = strlcpy(cfg, "input_player", sizeof(cfg));
|
||||
_len += strlcpy(cfg + _len, formatted_number, sizeof(cfg) - _len);
|
||||
|
||||
if (settings->uints.input_mouse_index[i]
|
||||
!= overrides->uints.input_mouse_index[i])
|
||||
|
@ -854,12 +854,12 @@ core_option_manager_t *core_option_manager_new_vars(
|
||||
{
|
||||
if (core_option_manager_parse_variable(opt, size, var, config_src))
|
||||
{
|
||||
size_t _len = 0;
|
||||
/* If variable is read correctly, add it to
|
||||
* the map */
|
||||
char address[256];
|
||||
|
||||
address[0] = '#';
|
||||
address[1] = '\0';
|
||||
address[ _len] = '#';
|
||||
address[++_len] = '\0';
|
||||
|
||||
/* Address string is normally:
|
||||
* <category_key><delim><tag><option_key>
|
||||
@ -869,7 +869,7 @@ core_option_manager_t *core_option_manager_new_vars(
|
||||
* so we could just set the address to
|
||||
* <option_key> - but for consistency with
|
||||
* 'modern' options, we apply the tag regardless */
|
||||
strlcat(address, var->key, sizeof(address));
|
||||
strlcpy(address + _len, var->key, sizeof(address) - _len);
|
||||
|
||||
if (!nested_list_add_item(opt->option_map,
|
||||
address, NULL, (const void*)&opt->opts[size]))
|
||||
|
738
database_info.c
738
database_info.c
@ -34,415 +34,415 @@ int database_info_build_query_enum(char *s, size_t len,
|
||||
enum database_query_type type,
|
||||
const char *path)
|
||||
{
|
||||
size_t pos = 0;
|
||||
size_t _len = 0;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case DATABASE_QUERY_ENTRY:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'n';
|
||||
s[3] = 'a';
|
||||
s[4] = 'm';
|
||||
s[5] = 'e';
|
||||
s[6] = '\'';
|
||||
s[7] = ':';
|
||||
s[8] = '"';
|
||||
s[9] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 'm';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_PUBLISHER:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'p';
|
||||
s[3] = 'u';
|
||||
s[4] = 'b';
|
||||
s[5] = 'l';
|
||||
s[6] = 'i';
|
||||
s[7] = 's';
|
||||
s[8] = 'h';
|
||||
s[9] = 'e';
|
||||
s[10] = 'r';
|
||||
s[11] = '\'';
|
||||
s[12] = ':';
|
||||
s[13] = '"';
|
||||
s[14] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'p';
|
||||
s[++_len] = 'u';
|
||||
s[++_len] = 'b';
|
||||
s[++_len] = 'l';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'h';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_DEVELOPER:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'd';
|
||||
s[3] = 'e';
|
||||
s[4] = 'v';
|
||||
s[5] = 'e';
|
||||
s[6] = 'l';
|
||||
s[7] = 'o';
|
||||
s[8] = 'p';
|
||||
s[9] = 'e';
|
||||
s[10] = 'r';
|
||||
s[11] = '\'';
|
||||
s[12] = ':';
|
||||
s[13] = 'g';
|
||||
s[14] = 'l';
|
||||
s[15] = 'o';
|
||||
s[16] = 'b';
|
||||
s[17] = '(';
|
||||
s[18] = '\'';
|
||||
s[19] = '*';
|
||||
s[20] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '*';
|
||||
s[pos+1] = '\'';
|
||||
s[pos+2] = ')';
|
||||
s[pos+3] = '}';
|
||||
s[pos+4] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'd';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'v';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'l';
|
||||
s[++_len] = 'o';
|
||||
s[++_len] = 'p';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = 'l';
|
||||
s[++_len] = 'o';
|
||||
s[++_len] = 'b';
|
||||
s[++_len] = '(';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = '*';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '*';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ')';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_ORIGIN:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'o';
|
||||
s[3] = 'r';
|
||||
s[4] = 'i';
|
||||
s[5] = 'g';
|
||||
s[6] = 'i';
|
||||
s[7] = 'n';
|
||||
s[8] = '\'';
|
||||
s[9] = ':';
|
||||
s[10] = '"';
|
||||
s[11] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'o';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_FRANCHISE:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'f';
|
||||
s[3] = 'r';
|
||||
s[4] = 'a';
|
||||
s[5] = 'n';
|
||||
s[6] = 'c';
|
||||
s[7] = 'h';
|
||||
s[8] = 'i';
|
||||
s[9] = 's';
|
||||
s[10] = 'e';
|
||||
s[11] = '\'';
|
||||
s[12] = ':';
|
||||
s[13] = '"';
|
||||
s[14] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'f';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'c';
|
||||
s[++_len] = 'h';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_RATING:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'e';
|
||||
s[3] = 's';
|
||||
s[4] = 'r';
|
||||
s[5] = 'b';
|
||||
s[6] = '_';
|
||||
s[7] = 'r';
|
||||
s[8] = 'a';
|
||||
s[9] = 't';
|
||||
s[10] = 'i';
|
||||
s[11] = 'n';
|
||||
s[12] = 'g';
|
||||
s[13] = '\'';
|
||||
s[14] = ':';
|
||||
s[15] = '"';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'b';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_BBFC_RATING:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'b';
|
||||
s[3] = 'b';
|
||||
s[4] = 'f';
|
||||
s[5] = 'c';
|
||||
s[6] = '_';
|
||||
s[7] = 'r';
|
||||
s[8] = 'a';
|
||||
s[9] = 't';
|
||||
s[10] = 'i';
|
||||
s[11] = 'n';
|
||||
s[12] = 'g';
|
||||
s[13] = '\'';
|
||||
s[14] = ':';
|
||||
s[15] = '"';
|
||||
s[16] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'b';
|
||||
s[++_len] = 'b';
|
||||
s[++_len] = 'f';
|
||||
s[++_len] = 'c';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_ELSPA_RATING:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'e';
|
||||
s[3] = 'l';
|
||||
s[4] = 's';
|
||||
s[5] = 'p';
|
||||
s[6] = 'a';
|
||||
s[7] = '_';
|
||||
s[8] = 'r';
|
||||
s[9] = 'a';
|
||||
s[10] = 't';
|
||||
s[11] = 'i';
|
||||
s[12] = 'n';
|
||||
s[13] = 'g';
|
||||
s[14] = '\'';
|
||||
s[15] = ':';
|
||||
s[16] = '"';
|
||||
s[17] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'l';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'p';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_ESRB_RATING:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'e';
|
||||
s[3] = 's';
|
||||
s[4] = 'r';
|
||||
s[5] = 'b';
|
||||
s[6] = '_';
|
||||
s[7] = 'r';
|
||||
s[8] = 'a';
|
||||
s[9 ] = 't';
|
||||
s[10] = 'i';
|
||||
s[11] = 'n';
|
||||
s[12] = 'g';
|
||||
s[13] = '\'';
|
||||
s[14] = ':';
|
||||
s[15] = '"';
|
||||
s[16] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'b';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_PEGI_RATING:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'p';
|
||||
s[3] = 'e';
|
||||
s[4] = 'g';
|
||||
s[5] = 'i';
|
||||
s[6] = '_';
|
||||
s[7] = 'r';
|
||||
s[8] = 'a';
|
||||
s[9] = 't';
|
||||
s[10] = 'i';
|
||||
s[11] = 'n';
|
||||
s[12] = 'g';
|
||||
s[13] = '\'';
|
||||
s[14] = ':';
|
||||
s[15] = '"';
|
||||
s[16] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'p';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_CERO_RATING:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'c';
|
||||
s[3] = 'e';
|
||||
s[4] = 'r';
|
||||
s[5] = 'o';
|
||||
s[6] = '_';
|
||||
s[7] = 'r';
|
||||
s[8] = 'a';
|
||||
s[9] = 't';
|
||||
s[10] = 'i';
|
||||
s[11] = 'n';
|
||||
s[12] = 'g';
|
||||
s[13] = '\'';
|
||||
s[14] = ':';
|
||||
s[15] = '"';
|
||||
s[16] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'c';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'o';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_ENHANCEMENT_HW:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'e';
|
||||
s[3] = 'n';
|
||||
s[4] = 'h';
|
||||
s[5] = 'a';
|
||||
s[6] = 'n';
|
||||
s[7] = 'c';
|
||||
s[8] = 'e';
|
||||
s[9] = 'm';
|
||||
s[10] = 'e';
|
||||
s[11] = 'n';
|
||||
s[12] = 't';
|
||||
s[13] = '_';
|
||||
s[14] = 'h';
|
||||
s[15] = 'w';
|
||||
s[16] = '\'';
|
||||
s[17] = ':';
|
||||
s[18] = '"';
|
||||
s[19] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'h';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'c';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'm';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'h';
|
||||
s[++_len] = 'w';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_EDGE_MAGAZINE_RATING:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'e';
|
||||
s[3] = 'd';
|
||||
s[4] = 'g';
|
||||
s[5] = 'e';
|
||||
s[6] = '_';
|
||||
s[7] = 'r';
|
||||
s[8] = 'a';
|
||||
s[9] = 't';
|
||||
s[10] = 'i';
|
||||
s[11] = 'n';
|
||||
s[12] = 'g';
|
||||
s[13] = '\'';
|
||||
s[14] = ':';
|
||||
s[15] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '}';
|
||||
s[pos+1] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'd';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_EDGE_MAGAZINE_ISSUE:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'e';
|
||||
s[3] = 'd';
|
||||
s[4] = 'g';
|
||||
s[5] = 'e';
|
||||
s[6] = '_';
|
||||
s[7] = 'i';
|
||||
s[8] = 's';
|
||||
s[9] = 's';
|
||||
s[10] = 'u';
|
||||
s[11] = 'e';
|
||||
s[12] = '\'';
|
||||
s[13] = ':';
|
||||
s[14] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '}';
|
||||
s[pos+1] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'd';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'u';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_FAMITSU_MAGAZINE_RATING:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'f';
|
||||
s[3] = 'a';
|
||||
s[4] = 'm';
|
||||
s[5] = 'i';
|
||||
s[6] = 't';
|
||||
s[7] = 's';
|
||||
s[8] = 'u';
|
||||
s[9] = '_';
|
||||
s[10] = 'r';
|
||||
s[11] = 'a';
|
||||
s[12] = 't';
|
||||
s[13] = 'i';
|
||||
s[14] = 'n';
|
||||
s[15] = 'g';
|
||||
s[16] = '\'';
|
||||
s[17] = ':';
|
||||
s[18] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '}';
|
||||
s[pos+1] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'f';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 'm';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'u';
|
||||
s[++_len] = '_';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 'i';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 'g';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_RELEASEDATE_MONTH:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'r';
|
||||
s[3] = 'e';
|
||||
s[4] = 'l';
|
||||
s[5] = 'e';
|
||||
s[6] = 'a';
|
||||
s[7] = 's';
|
||||
s[8] = 'e';
|
||||
s[9] = 'm';
|
||||
s[10] = 'o';
|
||||
s[11] = 'n';
|
||||
s[12] = 't';
|
||||
s[13] = 'h';
|
||||
s[14] = '\'';
|
||||
s[15] = ':';
|
||||
s[16] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '}';
|
||||
s[pos+1] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'l';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'm';
|
||||
s[++_len] = 'o';
|
||||
s[++_len] = 'n';
|
||||
s[++_len] = 't';
|
||||
s[++_len] = 'h';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_RELEASEDATE_YEAR:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'r';
|
||||
s[3] = 'e';
|
||||
s[4] = 'l';
|
||||
s[5] = 'e';
|
||||
s[6] = 'a';
|
||||
s[7] = 's';
|
||||
s[8] = 'e';
|
||||
s[9] = 'y';
|
||||
s[10] = 'e';
|
||||
s[11] = 'a';
|
||||
s[12] = 'r';
|
||||
s[13] = '\'';
|
||||
s[14] = ':';
|
||||
s[15] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '}';
|
||||
s[pos+1] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'l';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'y';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'a';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_ENTRY_MAX_USERS:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = 'u';
|
||||
s[3] = 's';
|
||||
s[4] = 'e';
|
||||
s[5] = 'r';
|
||||
s[6] = 's';
|
||||
s[7] = '\'';
|
||||
s[8] = ':';
|
||||
s[9] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '}';
|
||||
s[pos+1] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = 'u';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = 'e';
|
||||
s[++_len] = 'r';
|
||||
s[++_len] = 's';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
case DATABASE_QUERY_NONE:
|
||||
s[0] = '{';
|
||||
s[1] = '\'';
|
||||
s[2] = '\'';
|
||||
s[3] = ':';
|
||||
s[4] = '\'';
|
||||
s[5] = ':';
|
||||
s[6] = '"';
|
||||
s[7] = '\0';
|
||||
pos = strlcat(s, path, len);
|
||||
s[pos ] = '"';
|
||||
s[pos+1] = '}';
|
||||
s[pos+2] = '\0';
|
||||
s[ _len] = '{';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '\'';
|
||||
s[++_len] = ':';
|
||||
s[++_len] = '"';
|
||||
s[++_len] = '\0';
|
||||
_len += strlcpy(s + _len, path, len - _len);
|
||||
s[ _len] = '"';
|
||||
s[++_len] = '}';
|
||||
s[++_len] = '\0';
|
||||
break;
|
||||
}
|
||||
|
||||
|
36
deps/discord-rpc/src/discord_register_linux.c
vendored
36
deps/discord-rpc/src/discord_register_linux.c
vendored
@ -25,6 +25,7 @@ int get_process_id(void)
|
||||
* Discord client as discord-<appid>:// */
|
||||
void Discord_Register(const char *applicationId, const char *command)
|
||||
{
|
||||
size_t _len;
|
||||
FILE* fp;
|
||||
int fileLen;
|
||||
char xdgMimeCommand[1024];
|
||||
@ -61,21 +62,39 @@ void Discord_Register(const char *applicationId, const char *command)
|
||||
return;
|
||||
}
|
||||
|
||||
snprintf(desktopFilename, sizeof(desktopFilename), "/discord-%s.desktop", applicationId);
|
||||
_len = strlcpy(desktopFilename,
|
||||
"/discord-",
|
||||
sizeof(desktopFilename));
|
||||
_len += strlcpy(desktopFilename + _len,
|
||||
applicationId,
|
||||
sizeof(desktopFilename) - _len);
|
||||
_len += strlcpy(desktopFilename + _len,
|
||||
".desktop",
|
||||
sizeof(desktopFilename) - _len);
|
||||
|
||||
snprintf(desktopFilePath, sizeof(desktopFilePath), "%s/.local", home);
|
||||
_len = strlcpy(desktopFilePath,
|
||||
home,
|
||||
sizeof(desktopFilePath));
|
||||
_len += strlcpy(desktopFilePath + _len,
|
||||
"/.local",
|
||||
sizeof(desktopFilePath) - _len);
|
||||
if (!path_mkdir(desktopFilePath))
|
||||
return;
|
||||
strlcat(desktopFilePath, "/share", sizeof(desktopFilePath));
|
||||
_len += strlcpy(desktopFilePath + _len,
|
||||
"/share",
|
||||
sizeof(desktopFilePath) - _len);
|
||||
if (!path_mkdir(desktopFilePath))
|
||||
return;
|
||||
strlcat(desktopFilePath, "/applications", sizeof(desktopFilePath));
|
||||
_len += strlcpy(desktopFilePath + _len,
|
||||
"/applications",
|
||||
sizeof(desktopFilePath) - _len);
|
||||
if (!path_mkdir(desktopFilePath))
|
||||
return;
|
||||
strlcat(desktopFilePath, desktopFilename, sizeof(desktopFilePath));
|
||||
_len += strlcpy(desktopFilePath + _len,
|
||||
desktopFilename,
|
||||
sizeof(desktopFilePath) - _len);
|
||||
|
||||
fp = fopen(desktopFilePath, "w");
|
||||
if (!fp)
|
||||
if (!(fp = fopen(desktopFilePath, "w")))
|
||||
return;
|
||||
|
||||
fwrite(desktopFile, 1, fileLen, fp);
|
||||
@ -93,6 +112,7 @@ void Discord_Register(const char *applicationId, const char *command)
|
||||
void Discord_RegisterSteamGame(const char *applicationId, const char *steamId)
|
||||
{
|
||||
char command[256];
|
||||
snprintf(command, sizeof(command), "xdg-open steam://rungameid/%s", steamId);
|
||||
size_t _len = strlcpy(command, "xdg-open steam://rungameid/", sizeof(command));
|
||||
strlcpy(command + _len, steamId, sizeof(command) - _len);
|
||||
Discord_Register(applicationId, command);
|
||||
}
|
||||
|
@ -1092,9 +1092,10 @@ extern "C" {
|
||||
|
||||
if (split.size >= 2)
|
||||
{
|
||||
strlcpy(lang_iso + _len, "_", sizeof(lang_iso) - _len);
|
||||
strlcat(lang_iso, split.elems[split.size >= 3 ? 2 : 1].data,
|
||||
sizeof(lang_iso));
|
||||
_len += strlcpy(lang_iso + _len, "_", sizeof(lang_iso) - _len);
|
||||
strlcpy(lang_iso + _len,
|
||||
split.elems[split.size >= 3 ? 2 : 1].data,
|
||||
sizeof(lang_iso) - _len);
|
||||
}
|
||||
string_list_deinitialize(&split);
|
||||
return retroarch_get_language_from_iso(lang_iso);
|
||||
|
Loading…
x
Reference in New Issue
Block a user