mirror of
https://github.com/transmission/transmission.git
synced 2025-12-20 02:18:42 +00:00
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:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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_);
|
||||||
|
|||||||
Reference in New Issue
Block a user