* Remove more strlcat calls

* Safer manual char assignment in database_info.c
This commit is contained in:
libretroadmin 2023-06-20 17:43:33 +02:00
parent bdc398d79f
commit 458fe7a761
5 changed files with 411 additions and 390 deletions

View file

@ -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])

View file

@ -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]))

View file

@ -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;
}

View file

@ -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);
}

View file

@ -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);