Skip to content

Commit 52320df

Browse files
authored
* platform: Honor the LIBRETRO_CHEATS_DIRECTORY environment variable. (#17440)
* frontend/drivers/platform_unix.c (libretro_cheats_directory): New variable. (frontend_unix_get_env): Set DEFAULT_DIR_CHEATS to the value of the LIBRETRO_CHEATS_DIRECTORY environment variable, if available. * frontend/drivers/platform_win32.c: Likewise. * configuration.c (config_load_file) <libretro_cheats_directory>: New variable. Use the values of the LIBRETRO_CHEATS_DIRECTORY environment variables instead of their corresponding configured values, when set. * docs/retroarch.6: Document it. * retroarch.c (retroarch_print_help): Extend help text.
1 parent 4020326 commit 52320df

File tree

5 files changed

+31
-5
lines changed

5 files changed

+31
-5
lines changed

configuration.c

+7
Original file line numberDiff line numberDiff line change
@@ -3571,6 +3571,7 @@ static bool config_load_file(global_t *global,
35713571
char* libretro_directory = NULL;
35723572
char* libretro_assets_directory = NULL;
35733573
char* libretro_autoconfig_directory = NULL;
3574+
char* libretro_cheats_directory = NULL;
35743575
char* libretro_database_directory = NULL;
35753576
char* libretro_system_directory = NULL;
35763577
char* libretro_video_filter_directory = NULL;
@@ -3883,6 +3884,12 @@ static bool config_load_file(global_t *global,
38833884
settings->paths.directory_autoconfig,
38843885
libretro_autoconfig_directory);
38853886

3887+
libretro_cheats_directory = getenv("LIBRETRO_CHEATS_DIRECTORY");
3888+
if (libretro_cheats_directory) /* override configuration value */
3889+
configuration_set_string(settings,
3890+
settings->paths.path_cheat_database,
3891+
libretro_cheats_directory);
3892+
38863893
libretro_database_directory = getenv("LIBRETRO_DATABASE_DIRECTORY");
38873894
if (libretro_database_directory) /* override configuration value */
38883895
configuration_set_string(settings,

docs/retroarch.6

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.\" retroarch.6:
22

3-
.TH "RETROARCH" "6" "January 18, 2025" "RETROARCH" "System Manager's Manual: retroarch"
3+
.TH "RETROARCH" "6" "January 20, 2025" "RETROARCH" "System Manager's Manual: retroarch"
44

55
.SH NAME
66

@@ -261,6 +261,12 @@ Specify the directory where RetroArch looks for controller
261261
auto-configuration files, overriding the value of the
262262
"joypad_autoconfig_dir" configuration file option.
263263

264+
.TP
265+
\fBLIBRETRO_CHEATS_DIRECTORY\fR
266+
Specify the directory where RetroArch looks for cheat files,
267+
overriding the value of the "cheat_database_path" configuration file
268+
option.
269+
264270
.TP
265271
\fBLIBRETRO_DATABASE_DIRECTORY\fR
266272
Specify the directory where RetroArch looks for database files,

frontend/drivers/platform_unix.c

+8-2
Original file line numberDiff line numberDiff line change
@@ -1325,6 +1325,7 @@ static void frontend_unix_get_env(int *argc,
13251325
const char* libretro_directory = getenv("LIBRETRO_DIRECTORY");
13261326
const char* libretro_assets_directory = getenv("LIBRETRO_ASSETS_DIRECTORY");
13271327
const char* libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
1328+
const char* libretro_cheats_directory = getenv("LIBRETRO_CHEATS_DIRECTORY");
13281329
const char* libretro_database_directory = getenv("LIBRETRO_DATABASE_DIRECTORY");
13291330
const char* libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
13301331
const char* libretro_video_filter_directory = getenv("LIBRETRO_VIDEO_FILTER_DIRECTORY");
@@ -1904,8 +1905,13 @@ static void frontend_unix_get_env(int *argc,
19041905
else
19051906
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_SHADER], base_path,
19061907
"shaders", sizeof(g_defaults.dirs[DEFAULT_DIR_SHADER]));
1907-
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CHEATS], base_path,
1908-
"cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
1908+
if (!string_is_empty(libretro_cheats_directory))
1909+
strlcpy(g_defaults.dirs[DEFAULT_DIR_CHEATS],
1910+
libretro_cheats_directory,
1911+
sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
1912+
else
1913+
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_CHEATS], base_path,
1914+
"cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
19091915
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_OVERLAY], base_path,
19101916
"overlays", sizeof(g_defaults.dirs[DEFAULT_DIR_OVERLAY]));
19111917
fill_pathname_join(g_defaults.dirs[DEFAULT_DIR_OSK_OVERLAY], base_path,

frontend/drivers/platform_win32.c

+8-2
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,7 @@ static void frontend_win32_env_get(int *argc, char *argv[],
568568
const char *libretro_directory = getenv("LIBRETRO_DIRECTORY");
569569
const char *libretro_assets_directory = getenv("LIBRETRO_ASSETS_DIRECTORY");
570570
const char* libretro_autoconfig_directory = getenv("LIBRETRO_AUTOCONFIG_DIRECTORY");
571+
const char* libretro_cheats_directory = getenv("LIBRETRO_CHEATS_DIRECTORY");
571572
const char* libretro_database_directory = getenv("LIBRETRO_DATABASE_DIRECTORY");
572573
const char* libretro_system_directory = getenv("LIBRETRO_SYSTEM_DIRECTORY");
573574
const char* libretro_video_filter_directory = getenv("LIBRETRO_VIDEO_FILTER_DIRECTORY");
@@ -594,8 +595,13 @@ static void frontend_win32_env_get(int *argc, char *argv[],
594595
else
595596
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER],
596597
":\\filters\\video", sizeof(g_defaults.dirs[DEFAULT_DIR_VIDEO_FILTER]));
597-
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CHEATS],
598-
":\\cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
598+
if (!string_is_empty(libretro_cheats_directory))
599+
strlcpy(g_defaults.dirs[DEFAULT_DIR_CHEATS],
600+
libretro_cheats_directory,
601+
sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
602+
else
603+
fill_pathname_expand_special(g_defaults.dirs[DEFAULT_DIR_CHEATS],
604+
":\\cheats", sizeof(g_defaults.dirs[DEFAULT_DIR_CHEATS]));
599605
if (!string_is_empty(libretro_database_directory))
600606
strlcpy(g_defaults.dirs[DEFAULT_DIR_DATABASE],
601607
libretro_database_directory,

retroarch.c

+1
Original file line numberDiff line numberDiff line change
@@ -6531,6 +6531,7 @@ static void retroarch_print_help(const char *arg0)
65316531
"\nThe following environment variables are supported:\n\n"
65326532
" LIBRETRO_ASSETS_DIRECTORY\n"
65336533
" LIBRETRO_AUTOCONFIG_DIRECTORY\n"
6534+
" LIBRETRO_CHEATS_DIRECTORY\n"
65346535
" LIBRETRO_DATABASE_DIRECTORY\n"
65356536
" LIBRETRO_DIRECTORY\n"
65366537
" LIBRETRO_SYSTEM_DIRECTORY\n"

0 commit comments

Comments
 (0)