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 */ /* load the defaults from config file + libtransmission defaults */
auto const config_dir = getConfigDir(argc, (char const**)argv); 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 */ /* the command line overrides defaults */
if (parseCommandLine(&settings, argc, (char const**)argv) != 0) 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_start_paused, false);
app_defaults_map.try_emplace(TR_KEY_pidfile, tr_variant::unmanaged_string(""sv)); app_defaults_map.try_emplace(TR_KEY_pidfile, tr_variant::unmanaged_string(""sv));
auto const app_defaults = tr_variant{ std::move(app_defaults_map) }; 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 } // namespace

View File

@@ -108,7 +108,7 @@ tr_variant& getPrefs()
if (!settings.has_value()) if (!settings.has_value())
{ {
auto const app_defaults = get_default_app_settings(); 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); ensure_sound_cmd_is_a_list(&settings);
} }

View File

@@ -479,23 +479,21 @@ tr_variant tr_sessionGetSettings(tr_session const* session)
return settings; 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(); 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>()) if (app_defaults != nullptr && app_defaults->holds_alternative<tr_variant::Map>())
{ {
settings.merge(*app_defaults); settings.merge(*app_defaults);
} }
// if a settings file exists, use it to override the defaults // ...and settings.json (if available) override the defaults
if (auto const filename = fmt::format( if (auto const filename = fmt::format("{:s}/settings.json", config_dir); tr_sys_path_exists(filename))
"{:s}/settings.json",
config_dir != nullptr ? config_dir : tr_getDefaultConfigDir(app_name));
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); settings.merge(*file_settings);
} }
@@ -563,7 +561,7 @@ tr_session* tr_sessionInit(char const* config_dir, bool message_queueing_enabled
// - client settings // - client settings
// - previous session's values in settings.json // - previous session's values in settings.json
// - hardcoded defaults // - hardcoded defaults
auto settings = tr_sessionLoadSettings(nullptr, config_dir, nullptr); auto settings = tr_sessionLoadSettings(config_dir);
settings.merge(client_settings); settings.merge(client_settings);
// if logging is desired, start it now before doing more work // 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. * 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 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 * @return the loaded settings
* @see `tr_sessionGetDefaultSettings()` * @see `tr_sessionGetDefaultSettings()`
* @see `tr_sessionInit()` * @see `tr_sessionInit()`
* @see `tr_sessionSaveSettings()` * @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 * Add the session's configuration settings to the benc dictionary

View File

@@ -238,7 +238,7 @@ Prefs::Prefs(QString config_dir)
#endif #endif
auto const app_defaults = get_default_app_settings(); 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); ensureSoundCommandIsAList(&settings);
for (int i = 0; i < PREFS_COUNT; ++i) for (int i = 0; i < PREFS_COUNT; ++i)

View File

@@ -371,7 +371,7 @@ void Session::start()
} }
else 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); session_ = tr_sessionInit(config_dir_.toUtf8().constData(), true, settings);
rpc_.start(session_); rpc_.start(session_);