diff --git a/configuration.c b/configuration.c index 92cd8733ea..76b559a061 100644 --- a/configuration.c +++ b/configuration.c @@ -587,7 +587,7 @@ static int populate_settings_path(settings_t *settings, struct config_path_setti SETTING_PATH("core_updater_buildbot_url", settings->network.buildbot_url, false, NULL, true); SETTING_PATH("core_updater_buildbot_assets_url", settings->network.buildbot_assets_url, false, NULL, true); #ifdef HAVE_NETWORKING - SETTING_PATH("netplay_ip_address", global->netplay.server, false, NULL, true); + SETTING_PATH("netplay_ip_address", path_get_server_ptr(), false, NULL, true); #endif SETTING_PATH("recording_output_directory", global->record.output_dir, false, NULL, true); @@ -1755,7 +1755,7 @@ static bool config_load_file(const char *path, bool set_defaults, #ifdef HAVE_NETWORKING if (retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS)) - override_netplay_ip_address = strdup(global->netplay.server); + override_netplay_ip_address = strdup(path_get(RARCH_PATH_SERVER)); #endif /* Boolean settings */ @@ -1944,7 +1944,7 @@ static bool config_load_file(const char *path, bool set_defaults, #ifdef HAVE_NETWORKING if (retroarch_override_setting_is_set(RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS)) { - strlcpy(global->netplay.server, override_netplay_ip_address, sizeof(global->netplay.server)); + path_set(RARCH_PATH_SERVER, override_netplay_ip_address); free(override_netplay_ip_address); } #endif diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index cedfe8a5ee..92ae73ffa0 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -3297,7 +3297,8 @@ static int action_ok_netplay_enable_host(const char *path, } global->netplay.is_client = false; - global->netplay.server[0] = '\0'; + + path_clear(RARCH_PATH_SERVER); /* If we haven't yet started, this will load on its own */ if (!content_is_inited()) @@ -3344,7 +3345,7 @@ static int action_ok_netplay_enable_client(const char *path, global->netplay.is_client = true; /* We can't do anything without a host specified */ - if (!global->netplay.server[0]) + if (path_is_empty(RARCH_PATH_SERVER)) { runloop_msg_queue_push( "Please specify the Netplay server's IP address or hostname.", diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 11df264913..a77e5ff774 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1657,14 +1657,14 @@ void general_write_handler(void *data) case MENU_ENUM_LABEL_NETPLAY_MODE: #ifdef HAVE_NETWORKING if (!global->netplay.is_client) - *global->netplay.server = '\0'; + path_clear(RARCH_PATH_SERVER); retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_NETPLAY_MODE); #endif break; case MENU_ENUM_LABEL_NETPLAY_SPECTATOR_MODE_ENABLE: #ifdef HAVE_NETWORKING if (global->netplay.is_spectate) - *global->netplay.server = '\0'; + path_clear(RARCH_PATH_SERVER); #endif break; case MENU_ENUM_LABEL_NETPLAY_DELAY_FRAMES: @@ -5810,8 +5810,8 @@ static bool setting_append_list( CONFIG_STRING( list, list_info, - global->netplay.server, - sizeof(global->netplay.server), + path_get_server_ptr(), + path_get_server_size(), msg_hash_to_str(MENU_ENUM_LABEL_NETPLAY_IP_ADDRESS), msg_hash_to_str(MENU_ENUM_LABEL_VALUE_NETPLAY_IP_ADDRESS), "", diff --git a/network/netplay/netplay.c b/network/netplay/netplay.c index 433b022288..1e9c8dda08 100644 --- a/network/netplay/netplay.c +++ b/network/netplay/netplay.c @@ -34,6 +34,7 @@ #include "../../configuration.h" #include "../../command.h" #include "../../movie.h" +#include "../../paths.h" #include "../../runloop.h" #define MAX_STALL_TIME_USEC (10*1000*1000) @@ -1327,7 +1328,7 @@ bool init_netplay(void) core_set_default_callbacks(&cbs); - if (*global->netplay.server) + if (!path_is_empty(RARCH_PATH_SERVER)) { RARCH_LOG("Connecting to netplay host...\n"); global->netplay.is_client = true; @@ -1341,10 +1342,13 @@ bool init_netplay(void) } netplay_data = (netplay_t*)netplay_new( - global->netplay.is_client ? global->netplay.server : NULL, - global->netplay.port ? global->netplay.port : RARCH_DEFAULT_PORT, - global->netplay.sync_frames, global->netplay.check_frames, &cbs, - global->netplay.is_spectate, settings->username); + global->netplay.is_client ? path_get(RARCH_PATH_SERVER) : NULL, + global->netplay.port ? global->netplay.port : RARCH_DEFAULT_PORT, + global->netplay.sync_frames, + global->netplay.check_frames, + &cbs, + global->netplay.is_spectate, + settings->username); if (netplay_data) return true; diff --git a/paths.c b/paths.c index 91a5e437e2..68d3d3fb5b 100644 --- a/paths.c +++ b/paths.c @@ -51,6 +51,7 @@ /* For --subsystem content. */ static struct string_list *subsystem_fullpaths = NULL; +static char path_server[PATH_MAX_LENGTH] = {0}; static char path_savefile[PATH_MAX_LENGTH] = {0}; static char path_savestate[PATH_MAX_LENGTH] = {0}; static char path_cheatfile[PATH_MAX_LENGTH] = {0}; @@ -496,6 +497,11 @@ char *path_get_core_ptr(void) return path_libretro; } +char *path_get_server_ptr(void) +{ + return path_server; +} + const char *path_get(enum rarch_path_type type) { switch (type) @@ -508,6 +514,8 @@ const char *path_get(enum rarch_path_type type) return path_cheatfile; case RARCH_PATH_REMAPFILE: return path_remapfile; + case RARCH_PATH_SERVER: + return path_server; case RARCH_PATH_IPS: return path_ips; case RARCH_PATH_BPS: @@ -540,6 +548,10 @@ const char *path_get(enum rarch_path_type type) return NULL; } +size_t path_get_server_size(void) +{ + return sizeof(path_server); +} size_t path_get_core_size(void) { @@ -608,6 +620,10 @@ bool path_set(enum rarch_path_type type, const char *path) strlcpy(path_remapfile, path, sizeof(path_remapfile)); break; + case RARCH_PATH_SERVER: + strlcpy(path_server, path, + sizeof(path_server)); + break; case RARCH_PATH_IPS: strlcpy(path_ips, path, sizeof(path_ips)); @@ -676,6 +692,10 @@ bool path_is_empty(enum rarch_path_type type) if (string_is_empty(path_remapfile)) return true; break; + case RARCH_PATH_SERVER: + if (string_is_empty(path_server)) + return true; + break; case RARCH_PATH_IPS: if (string_is_empty(path_ips)) return true; @@ -737,6 +757,9 @@ void path_clear(enum rarch_path_type type) case RARCH_PATH_REMAPFILE: *path_remapfile = '\0'; break; + case RARCH_PATH_SERVER: + *path_server = '\0'; + break; case RARCH_PATH_IPS: *path_ips = '\0'; break; diff --git a/paths.h b/paths.h index ec01bb6091..2305d0f8c3 100644 --- a/paths.h +++ b/paths.h @@ -45,6 +45,7 @@ enum rarch_path_type RARCH_PATH_IPS, RARCH_PATH_BPS, RARCH_PATH_REMAPFILE, + RARCH_PATH_SERVER, RARCH_PATH_CONFIG_APPEND, RARCH_PATH_CORE_OPTIONS, RARCH_PATH_DEFAULT_SHADER_PRESET, @@ -75,12 +76,16 @@ void path_set_basename(const char *path); /* get size functions */ +size_t path_get_server_size(void); + size_t path_get_core_size(void); /* get ptr functions */ char *path_get_core_ptr(void); +char *path_get_server_ptr(void); + /* get list functions */ struct string_list *path_get_subsystem_list(void); diff --git a/retroarch.c b/retroarch.c index 39a30ad035..a7b59e1ae4 100644 --- a/retroarch.c +++ b/retroarch.c @@ -670,15 +670,14 @@ static void retroarch_parse_input(int argc, char *argv[]) retroarch_override_setting_set( RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS); global->netplay.enable = true; - *global->netplay.server = '\0'; + path_clear(RARCH_PATH_SERVER); break; case 'C': retroarch_override_setting_set( RARCH_OVERRIDE_SETTING_NETPLAY_IP_ADDRESS); global->netplay.enable = true; - strlcpy(global->netplay.server, optarg, - sizeof(global->netplay.server)); + path_set(RARCH_PATH_SERVER, optarg); break; case 'F': diff --git a/runloop.c b/runloop.c index fb1ad59d75..757c451054 100644 --- a/runloop.c +++ b/runloop.c @@ -748,6 +748,7 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) path_clear(RARCH_PATH_SAVESTATE); path_clear(RARCH_PATH_CHEATFILE); path_clear(RARCH_PATH_REMAPFILE); + path_clear(RARCH_PATH_SERVER); path_clear(RARCH_PATH_IPS); path_clear(RARCH_PATH_UPS); path_clear(RARCH_PATH_BPS); diff --git a/runloop.h b/runloop.h index aecfeb316b..474746ec48 100644 --- a/runloop.h +++ b/runloop.h @@ -146,7 +146,6 @@ typedef struct global /* Netplay. */ struct { - char server[PATH_MAX_LENGTH]; bool enable; bool is_client; bool is_spectate;