refactor: simplify tr_sessionLoadSettings() args (#7935)

* refactor: remove unused appname arg from tr_sessionLoadSettings()

* refactor: swap order of arguments to tr_sessionLoadSettings()
  so way the optional arg can go at the end
This commit is contained in:
Charles Kerr
2025-12-15 13:44:38 -06:00
committed by GitHub
parent 109bc70511
commit fcd1e2ff8a
7 changed files with 14 additions and 17 deletions

View File

@@ -326,7 +326,7 @@ int tr_main(int argc, char* argv[])
/* load the defaults from config file + libtransmission defaults */
auto const config_dir = getConfigDir(argc, (char const**)argv);
auto settings = tr_sessionLoadSettings(nullptr, config_dir.c_str(), MyConfigName);
auto settings = tr_sessionLoadSettings(config_dir);
/* the command line overrides defaults */
if (parseCommandLine(&settings, argc, (char const**)argv) != 0)

View File

@@ -402,7 +402,7 @@ tr_variant load_settings(char const* config_dir)
app_defaults_map.try_emplace(TR_KEY_start_paused, false);
app_defaults_map.try_emplace(TR_KEY_pidfile, tr_variant::unmanaged_string(""sv));
auto const app_defaults = tr_variant{ std::move(app_defaults_map) };
return tr_sessionLoadSettings(&app_defaults, config_dir, MyName);
return tr_sessionLoadSettings(config_dir, &app_defaults);
}
} // namespace

View File

@@ -108,7 +108,7 @@ tr_variant& getPrefs()
if (!settings.has_value())
{
auto const app_defaults = get_default_app_settings();
settings.merge(tr_sessionLoadSettings(&app_defaults, gl_confdir.c_str(), nullptr));
settings.merge(tr_sessionLoadSettings(gl_confdir, &app_defaults));
ensure_sound_cmd_is_a_list(&settings);
}

View File

@@ -479,23 +479,21 @@ tr_variant tr_sessionGetSettings(tr_session const* session)
return settings;
}
tr_variant tr_sessionLoadSettings(tr_variant const* app_defaults, char const* config_dir, char const* app_name)
tr_variant tr_sessionLoadSettings(std::string_view const config_dir, tr_variant const* const app_defaults)
{
// start with session defaults...
auto settings = tr_sessionGetDefaultSettings();
// if app defaults are provided, override libtransmission defaults
// ...app defaults (if provided) override session defaults...
if (app_defaults != nullptr && app_defaults->holds_alternative<tr_variant::Map>())
{
settings.merge(*app_defaults);
}
// if a settings file exists, use it to override the defaults
if (auto const filename = fmt::format(
"{:s}/settings.json",
config_dir != nullptr ? config_dir : tr_getDefaultConfigDir(app_name));
tr_sys_path_exists(filename))
// ...and settings.json (if available) override the defaults
if (auto const filename = fmt::format("{:s}/settings.json", config_dir); tr_sys_path_exists(filename))
{
if (auto file_settings = tr_variant_serde::json().parse_file(filename); file_settings)
if (auto const file_settings = tr_variant_serde::json().parse_file(filename))
{
settings.merge(*file_settings);
}
@@ -563,7 +561,7 @@ tr_session* tr_sessionInit(char const* config_dir, bool message_queueing_enabled
// - client settings
// - previous session's values in settings.json
// - hardcoded defaults
auto settings = tr_sessionLoadSettings(nullptr, config_dir, nullptr);
auto settings = tr_sessionLoadSettings(config_dir);
settings.merge(client_settings);
// if logging is desired, start it now before doing more work

View File

@@ -179,15 +179,14 @@ tr_variant tr_sessionGetSettings(tr_session const* session);
*
* TODO: if we ever make libtransmissionapp, this would go there.
*
* @param app_defaults tr_variant containing the app defaults
* @param config_dir the configuration directory to find settings.json
* @param app_name if config_dir is empty, app_name is used to find the default dir.
* @param app_defaults optional tr_variant containing the app-specific defaults
* @return the loaded settings
* @see `tr_sessionGetDefaultSettings()`
* @see `tr_sessionInit()`
* @see `tr_sessionSaveSettings()`
*/
tr_variant tr_sessionLoadSettings(tr_variant const* app_defaults, char const* config_dir, char const* app_name);
[[nodiscard]] tr_variant tr_sessionLoadSettings(std::string_view config_dir, tr_variant const* app_defaults = nullptr);
/**
* Add the session's configuration settings to the benc dictionary

View File

@@ -238,7 +238,7 @@ Prefs::Prefs(QString config_dir)
#endif
auto const app_defaults = get_default_app_settings();
auto settings = tr_sessionLoadSettings(&app_defaults, config_dir_.toUtf8().constData(), nullptr);
auto settings = tr_sessionLoadSettings(config_dir_.toStdString(), &app_defaults);
ensureSoundCommandIsAList(&settings);
for (int i = 0; i < PREFS_COUNT; ++i)

View File

@@ -371,7 +371,7 @@ void Session::start()
}
else
{
auto const settings = tr_sessionLoadSettings(nullptr, config_dir_.toUtf8().constData(), "qt");
auto const settings = tr_sessionLoadSettings(config_dir_.toStdString());
session_ = tr_sessionInit(config_dir_.toUtf8().constData(), true, settings);
rpc_.start(session_);