Enable configuration of runtime log directory

This commit is contained in:
jdgleaver 2019-03-11 12:50:46 +00:00
parent fb6a403220
commit c05548e2ab
10 changed files with 61 additions and 9 deletions

View File

@ -1274,6 +1274,8 @@ static struct config_path_setting *populate_settings_path(settings_t *settings,
settings->paths.directory_thumbnails, true, NULL, true); settings->paths.directory_thumbnails, true, NULL, true);
SETTING_PATH("playlist_directory", SETTING_PATH("playlist_directory",
settings->paths.directory_playlist, true, NULL, true); settings->paths.directory_playlist, true, NULL, true);
SETTING_PATH("runtime_log_directory",
settings->paths.directory_runtime_log, true, NULL, true);
SETTING_PATH("joypad_autoconfig_dir", SETTING_PATH("joypad_autoconfig_dir",
settings->paths.directory_autoconfig, false, NULL, true); settings->paths.directory_autoconfig, false, NULL, true);
SETTING_PATH("audio_filter_dir", SETTING_PATH("audio_filter_dir",
@ -2058,6 +2060,7 @@ void config_set_defaults(void)
*settings->paths.directory_dynamic_wallpapers = '\0'; *settings->paths.directory_dynamic_wallpapers = '\0';
*settings->paths.directory_thumbnails = '\0'; *settings->paths.directory_thumbnails = '\0';
*settings->paths.directory_playlist = '\0'; *settings->paths.directory_playlist = '\0';
*settings->paths.directory_runtime_log = '\0';
*settings->paths.directory_autoconfig = '\0'; *settings->paths.directory_autoconfig = '\0';
#ifdef HAVE_MENU #ifdef HAVE_MENU
*settings->paths.directory_menu_content = '\0'; *settings->paths.directory_menu_content = '\0';
@ -3119,6 +3122,8 @@ static bool config_load_file(const char *path, bool set_defaults,
*settings->paths.directory_thumbnails = '\0'; *settings->paths.directory_thumbnails = '\0';
if (string_is_equal(settings->paths.directory_playlist, "default")) if (string_is_equal(settings->paths.directory_playlist, "default"))
*settings->paths.directory_playlist = '\0'; *settings->paths.directory_playlist = '\0';
if (string_is_equal(settings->paths.directory_runtime_log, "default"))
*settings->paths.directory_runtime_log = '\0';
#ifdef HAVE_MENU #ifdef HAVE_MENU
if (string_is_equal(settings->paths.directory_menu_content, "default")) if (string_is_equal(settings->paths.directory_menu_content, "default"))
*settings->paths.directory_menu_content = '\0'; *settings->paths.directory_menu_content = '\0';

View File

@ -577,6 +577,7 @@ typedef struct settings
char directory_system[PATH_MAX_LENGTH]; char directory_system[PATH_MAX_LENGTH];
char directory_cache[PATH_MAX_LENGTH]; char directory_cache[PATH_MAX_LENGTH];
char directory_playlist[PATH_MAX_LENGTH]; char directory_playlist[PATH_MAX_LENGTH];
char directory_runtime_log[PATH_MAX_LENGTH];
char directory_core_assets[PATH_MAX_LENGTH]; char directory_core_assets[PATH_MAX_LENGTH];
char directory_assets[PATH_MAX_LENGTH]; char directory_assets[PATH_MAX_LENGTH];
char directory_dynamic_wallpapers[PATH_MAX_LENGTH]; char directory_dynamic_wallpapers[PATH_MAX_LENGTH];

View File

@ -825,6 +825,8 @@ MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_COLLECTION_ENTRY,
"playlist_collection_entry") "playlist_collection_entry")
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_DIRECTORY, MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_DIRECTORY,
"playlist_directory") "playlist_directory")
MSG_HASH(MENU_ENUM_LABEL_RUNTIME_LOG_DIRECTORY,
"runtime_log_directory")
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY, MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_ENTRY,
"playlist_entry") "playlist_entry")
MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_SETTINGS, MSG_HASH(MENU_ENUM_LABEL_PLAYLIST_SETTINGS,

View File

@ -8346,6 +8346,14 @@ MSG_HASH(
MENU_ENUM_SUBLABEL_CONTENT_RUNTIME_LOG_AGGREGATE, MENU_ENUM_SUBLABEL_CONTENT_RUNTIME_LOG_AGGREGATE,
"Keeps track of how long each item of content has run for, recorded as the aggregate total across all cores." "Keeps track of how long each item of content has run for, recorded as the aggregate total across all cores."
) )
MSG_HASH(
MENU_ENUM_LABEL_VALUE_RUNTIME_LOG_DIRECTORY,
"Runtime Logs"
)
MSG_HASH(
MENU_ENUM_SUBLABEL_RUNTIME_LOG_DIRECTORY,
"Save runtime log files to this directory."
)
MSG_HASH( MSG_HASH(
MENU_ENUM_LABEL_VALUE_PLAYLIST_SHOW_SUBLABELS, MENU_ENUM_LABEL_VALUE_PLAYLIST_SHOW_SUBLABELS,
"Show playlist sublabels" "Show playlist sublabels"

View File

@ -451,6 +451,7 @@ default_sublabel_macro(action_bind_sublabel_core_directory,
default_sublabel_macro(action_bind_sublabel_core_info_directory, MENU_ENUM_SUBLABEL_LIBRETRO_INFO_PATH) default_sublabel_macro(action_bind_sublabel_core_info_directory, MENU_ENUM_SUBLABEL_LIBRETRO_INFO_PATH)
default_sublabel_macro(action_bind_sublabel_joypad_autoconfig_directory, MENU_ENUM_SUBLABEL_JOYPAD_AUTOCONFIG_DIR) default_sublabel_macro(action_bind_sublabel_joypad_autoconfig_directory, MENU_ENUM_SUBLABEL_JOYPAD_AUTOCONFIG_DIR)
default_sublabel_macro(action_bind_sublabel_playlists_directory, MENU_ENUM_SUBLABEL_PLAYLIST_DIRECTORY) default_sublabel_macro(action_bind_sublabel_playlists_directory, MENU_ENUM_SUBLABEL_PLAYLIST_DIRECTORY)
default_sublabel_macro(action_bind_sublabel_runtime_log_directory, MENU_ENUM_SUBLABEL_RUNTIME_LOG_DIRECTORY)
default_sublabel_macro(action_bind_sublabel_cache_directory, MENU_ENUM_SUBLABEL_CACHE_DIRECTORY) default_sublabel_macro(action_bind_sublabel_cache_directory, MENU_ENUM_SUBLABEL_CACHE_DIRECTORY)
default_sublabel_macro(action_bind_sublabel_database_directory, MENU_ENUM_SUBLABEL_CONTENT_DATABASE_DIRECTORY) default_sublabel_macro(action_bind_sublabel_database_directory, MENU_ENUM_SUBLABEL_CONTENT_DATABASE_DIRECTORY)
default_sublabel_macro(action_bind_sublabel_cursor_directory, MENU_ENUM_SUBLABEL_CURSOR_DIRECTORY) default_sublabel_macro(action_bind_sublabel_cursor_directory, MENU_ENUM_SUBLABEL_CURSOR_DIRECTORY)
@ -1162,6 +1163,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_PLAYLIST_DIRECTORY: case MENU_ENUM_LABEL_PLAYLIST_DIRECTORY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlists_directory); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_playlists_directory);
break; break;
case MENU_ENUM_LABEL_RUNTIME_LOG_DIRECTORY:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_runtime_log_directory);
break;
case MENU_ENUM_LABEL_JOYPAD_AUTOCONFIG_DIR: case MENU_ENUM_LABEL_JOYPAD_AUTOCONFIG_DIR:
BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_joypad_autoconfig_directory); BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_joypad_autoconfig_directory);
break; break;

View File

@ -195,6 +195,7 @@ default_fill_title_macro(action_get_title_config_directory, MENU_ENUM_LABEL
default_fill_title_macro(action_get_title_input_remapping_directory, MENU_ENUM_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY) default_fill_title_macro(action_get_title_input_remapping_directory, MENU_ENUM_LABEL_VALUE_INPUT_REMAPPING_DIRECTORY)
default_fill_title_macro(action_get_title_autoconfig_directory, MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR ) default_fill_title_macro(action_get_title_autoconfig_directory, MENU_ENUM_LABEL_VALUE_JOYPAD_AUTOCONFIG_DIR )
default_fill_title_macro(action_get_title_playlist_directory, MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY) default_fill_title_macro(action_get_title_playlist_directory, MENU_ENUM_LABEL_VALUE_PLAYLIST_DIRECTORY)
default_fill_title_macro(action_get_title_runtime_log_directory, MENU_ENUM_LABEL_VALUE_RUNTIME_LOG_DIRECTORY)
default_fill_title_macro(action_get_title_browser_directory, MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY) default_fill_title_macro(action_get_title_browser_directory, MENU_ENUM_LABEL_VALUE_RGUI_BROWSER_DIRECTORY)
default_fill_title_macro(action_get_title_content_directory, MENU_ENUM_LABEL_VALUE_CONTENT_DIR) default_fill_title_macro(action_get_title_content_directory, MENU_ENUM_LABEL_VALUE_CONTENT_DIR)
default_fill_title_macro(action_get_title_screenshot_directory, MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY) default_fill_title_macro(action_get_title_screenshot_directory, MENU_ENUM_LABEL_VALUE_SCREENSHOT_DIRECTORY)
@ -666,6 +667,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
case MENU_ENUM_LABEL_PLAYLIST_DIRECTORY: case MENU_ENUM_LABEL_PLAYLIST_DIRECTORY:
BIND_ACTION_GET_TITLE(cbs, action_get_title_playlist_directory); BIND_ACTION_GET_TITLE(cbs, action_get_title_playlist_directory);
break; break;
case MENU_ENUM_LABEL_RUNTIME_LOG_DIRECTORY:
BIND_ACTION_GET_TITLE(cbs, action_get_title_runtime_log_directory);
break;
case MENU_ENUM_LABEL_CONTENT_DIRECTORY: case MENU_ENUM_LABEL_CONTENT_DIRECTORY:
BIND_ACTION_GET_TITLE(cbs, action_get_title_content_directory); BIND_ACTION_GET_TITLE(cbs, action_get_title_content_directory);
break; break;
@ -995,6 +999,9 @@ static int menu_cbs_init_bind_title_compare_label(menu_file_list_cbs_t *cbs,
case MENU_LABEL_PLAYLIST_DIRECTORY: case MENU_LABEL_PLAYLIST_DIRECTORY:
BIND_ACTION_GET_TITLE(cbs, action_get_title_playlist_directory); BIND_ACTION_GET_TITLE(cbs, action_get_title_playlist_directory);
break; break;
case MENU_LABEL_RUNTIME_LOG_DIRECTORY:
BIND_ACTION_GET_TITLE(cbs, action_get_title_runtime_log_directory);
break;
case MENU_LABEL_CONTENT_DIRECTORY: case MENU_LABEL_CONTENT_DIRECTORY:
BIND_ACTION_GET_TITLE(cbs, action_get_title_content_directory); BIND_ACTION_GET_TITLE(cbs, action_get_title_content_directory);
break; break;

View File

@ -6712,6 +6712,9 @@ bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist
menu_displaylist_parse_settings_enum(menu, info, menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_PLAYLIST_DIRECTORY, MENU_ENUM_LABEL_PLAYLIST_DIRECTORY,
PARSE_ONLY_DIR, false); PARSE_ONLY_DIR, false);
menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_RUNTIME_LOG_DIRECTORY,
PARSE_ONLY_DIR, false);
menu_displaylist_parse_settings_enum(menu, info, menu_displaylist_parse_settings_enum(menu, info,
MENU_ENUM_LABEL_SAVEFILE_DIRECTORY, MENU_ENUM_LABEL_SAVEFILE_DIRECTORY,
PARSE_ONLY_DIR, false); PARSE_ONLY_DIR, false);

View File

@ -11228,6 +11228,21 @@ static bool setting_append_list(
general_read_handler); general_read_handler);
(*list)[list_info->index - 1].action_start = directory_action_start_generic; (*list)[list_info->index - 1].action_start = directory_action_start_generic;
CONFIG_DIR(
list, list_info,
settings->paths.directory_runtime_log,
sizeof(settings->paths.directory_runtime_log),
MENU_ENUM_LABEL_RUNTIME_LOG_DIRECTORY,
MENU_ENUM_LABEL_VALUE_RUNTIME_LOG_DIRECTORY,
"",
MENU_ENUM_LABEL_VALUE_DIRECTORY_DEFAULT,
&group_info,
&subgroup_info,
parent_group,
general_write_handler,
general_read_handler);
(*list)[list_info->index - 1].action_start = directory_action_start_generic;
CONFIG_DIR( CONFIG_DIR(
list, list_info, list, list_info,
dir_get_ptr(RARCH_DIR_SAVEFILE), dir_get_ptr(RARCH_DIR_SAVEFILE),

View File

@ -1691,6 +1691,7 @@ enum msg_hash_enums
MENU_LABEL(RGUI_BROWSER_DIRECTORY), MENU_LABEL(RGUI_BROWSER_DIRECTORY),
MENU_LABEL(CONTENT_DATABASE_DIRECTORY), MENU_LABEL(CONTENT_DATABASE_DIRECTORY),
MENU_LABEL(PLAYLIST_DIRECTORY), MENU_LABEL(PLAYLIST_DIRECTORY),
MENU_LABEL(RUNTIME_LOG_DIRECTORY),
MENU_LABEL(CORE_ASSETS_DIRECTORY), MENU_LABEL(CORE_ASSETS_DIRECTORY),
MENU_LABEL(SCREENSHOT_DIRECTORY), MENU_LABEL(SCREENSHOT_DIRECTORY),
MENU_LABEL(CONTENT_DIRECTORY), MENU_LABEL(CONTENT_DIRECTORY),
@ -2454,6 +2455,7 @@ enum msg_hash_enums
#define MENU_LABEL_RGUI_BROWSER_DIRECTORY 0xa86cba73U #define MENU_LABEL_RGUI_BROWSER_DIRECTORY 0xa86cba73U
#define MENU_LABEL_CONTENT_DATABASE_DIRECTORY 0x6b443f80U #define MENU_LABEL_CONTENT_DATABASE_DIRECTORY 0x6b443f80U
#define MENU_LABEL_PLAYLIST_DIRECTORY 0x6361820bU #define MENU_LABEL_PLAYLIST_DIRECTORY 0x6361820bU
#define MENU_LABEL_RUNTIME_LOG_DIRECTORY 0xfaca231eU
#define MENU_LABEL_CORE_ASSETS_DIRECTORY 0x8ba5ee54U #define MENU_LABEL_CORE_ASSETS_DIRECTORY 0x8ba5ee54U
#define MENU_LABEL_CONTENT_DIRECTORY 0x7738dc14U #define MENU_LABEL_CONTENT_DIRECTORY 0x7738dc14U
#define MENU_LABEL_RGUI_CONFIG_DIRECTORY 0x0cb3e005U #define MENU_LABEL_RGUI_CONFIG_DIRECTORY 0x0cb3e005U

View File

@ -293,9 +293,9 @@ runtime_log_t *runtime_log_init(const char *content_path, const char *core_path,
if (!settings) if (!settings)
return NULL; return NULL;
if (string_is_empty(settings->paths.directory_playlist)) if (string_is_empty(settings->paths.directory_runtime_log) && string_is_empty(settings->paths.directory_playlist))
{ {
RARCH_ERR("Playlist directory is undefined - cannot save runtime logs.\n"); RARCH_ERR("Runtime log directory is undefined - cannot save runtime log files.\n");
return NULL; return NULL;
} }
@ -328,11 +328,18 @@ runtime_log_t *runtime_log_init(const char *content_path, const char *core_path,
return NULL; return NULL;
/* Get runtime log directory */ /* Get runtime log directory */
fill_pathname_join( if (string_is_empty(settings->paths.directory_runtime_log))
tmp_buf, {
settings->paths.directory_playlist, /* If 'custom' runtime log path is undefined,
"logs", * use default 'playlists/logs' directory... */
sizeof(tmp_buf)); fill_pathname_join(
tmp_buf,
settings->paths.directory_playlist,
"logs",
sizeof(tmp_buf));
}
else
strlcpy(tmp_buf, settings->paths.directory_runtime_log, sizeof(tmp_buf));
if (log_per_core) if (log_per_core)
{ {
@ -343,9 +350,7 @@ runtime_log_t *runtime_log_init(const char *content_path, const char *core_path,
sizeof(log_file_dir)); sizeof(log_file_dir));
} }
else else
{
strlcpy(log_file_dir, tmp_buf, sizeof(log_file_dir)); strlcpy(log_file_dir, tmp_buf, sizeof(log_file_dir));
}
if (string_is_empty(log_file_dir)) if (string_is_empty(log_file_dir))
return NULL; return NULL;