mirror of
https://github.com/transmission/transmission.git
synced 2026-04-02 00:27:38 +01:00
refactor: use fewer raw C strings (#8200)
* refactor: tr_sessionSaveSettings() takes a string_view * refactor: tr_sessionSetDownloadDir() takes a string_view * refactor: tr_sessionSetIncompleteDir() takes a string_view * refactor: tr_sessionSetRPCCWhitelist() takes a string_view * refactor: tr_sessionSetRPCPassword() takes a string_view * refactor: tr_sessionSetRPCUsername() takes a string_view * refactor: tr_sessionSetDefaultTrackers() takes a string_view * refactor: tr_sessionSetScript() takes a string_view
This commit is contained in:
@@ -445,7 +445,7 @@ int tr_main(int argc, char* argv[])
|
||||
}
|
||||
}
|
||||
|
||||
tr_sessionSaveSettings(h, config_dir.c_str(), settings);
|
||||
tr_sessionSaveSettings(h, config_dir, settings);
|
||||
|
||||
printf("\n");
|
||||
tr_sessionClose(h);
|
||||
|
||||
@@ -854,11 +854,10 @@ int tr_daemon::start([[maybe_unused]] bool foreground)
|
||||
}
|
||||
|
||||
/* start the session */
|
||||
auto const* const cdir = this->config_dir_.c_str();
|
||||
auto* session = tr_sessionInit(config_dir_, true, settings_);
|
||||
tr_sessionSetRPCCallback(session, on_rpc_callback, this);
|
||||
tr_logAddInfo(fmt::format(fmt::runtime(_("Loading settings from '{path}'")), fmt::arg("path", config_dir_)));
|
||||
tr_sessionSaveSettings(session, cdir, settings_);
|
||||
tr_sessionSaveSettings(session, config_dir_, settings_);
|
||||
|
||||
auto const* const settings_map = settings_.get_if<tr_variant::Map>();
|
||||
if (settings_map == nullptr)
|
||||
@@ -1013,7 +1012,7 @@ CLEANUP:
|
||||
|
||||
event_base_free(ev_base_);
|
||||
|
||||
tr_sessionSaveSettings(my_session_, cdir, settings_);
|
||||
tr_sessionSaveSettings(my_session_, config_dir_, settings_);
|
||||
tr_sessionClose(my_session_);
|
||||
pumpLogMessages(log_stream_);
|
||||
printf(" done.\n");
|
||||
|
||||
@@ -1137,11 +1137,11 @@ void Application::Impl::on_prefs_changed(tr_quark const key)
|
||||
break;
|
||||
|
||||
case TR_KEY_default_trackers:
|
||||
tr_sessionSetDefaultTrackers(tr, gtr_pref_string_get(key).c_str());
|
||||
tr_sessionSetDefaultTrackers(tr, gtr_pref_string_get(key));
|
||||
break;
|
||||
|
||||
case TR_KEY_download_dir:
|
||||
tr_sessionSetDownloadDir(tr, gtr_pref_string_get(key).c_str());
|
||||
tr_sessionSetDownloadDir(tr, gtr_pref_string_get(key));
|
||||
break;
|
||||
|
||||
case TR_KEY_message_level:
|
||||
@@ -1244,7 +1244,7 @@ void Application::Impl::on_prefs_changed(tr_quark const key)
|
||||
break;
|
||||
|
||||
case TR_KEY_rpc_whitelist:
|
||||
tr_sessionSetRPCWhitelist(tr, gtr_pref_string_get(key).c_str());
|
||||
tr_sessionSetRPCWhitelist(tr, gtr_pref_string_get(key));
|
||||
break;
|
||||
|
||||
case TR_KEY_rpc_whitelist_enabled:
|
||||
@@ -1252,11 +1252,11 @@ void Application::Impl::on_prefs_changed(tr_quark const key)
|
||||
break;
|
||||
|
||||
case TR_KEY_rpc_username:
|
||||
tr_sessionSetRPCUsername(tr, gtr_pref_string_get(key).c_str());
|
||||
tr_sessionSetRPCUsername(tr, gtr_pref_string_get(key));
|
||||
break;
|
||||
|
||||
case TR_KEY_rpc_password:
|
||||
tr_sessionSetRPCPassword(tr, gtr_pref_string_get(key).c_str());
|
||||
tr_sessionSetRPCPassword(tr, gtr_pref_string_get(key));
|
||||
break;
|
||||
|
||||
case TR_KEY_rpc_authentication_required:
|
||||
@@ -1300,7 +1300,7 @@ void Application::Impl::on_prefs_changed(tr_quark const key)
|
||||
break;
|
||||
|
||||
case TR_KEY_incomplete_dir:
|
||||
tr_sessionSetIncompleteDir(tr, gtr_pref_string_get(key).c_str());
|
||||
tr_sessionSetIncompleteDir(tr, gtr_pref_string_get(key));
|
||||
break;
|
||||
|
||||
case TR_KEY_incomplete_dir_enabled:
|
||||
@@ -1312,7 +1312,7 @@ void Application::Impl::on_prefs_changed(tr_quark const key)
|
||||
break;
|
||||
|
||||
case TR_KEY_script_torrent_done_filename:
|
||||
tr_sessionSetScript(tr, TR_SCRIPT_ON_TORRENT_DONE, gtr_pref_string_get(key).c_str());
|
||||
tr_sessionSetScript(tr, TR_SCRIPT_ON_TORRENT_DONE, gtr_pref_string_get(key));
|
||||
break;
|
||||
|
||||
case TR_KEY_script_torrent_done_seeding_enabled:
|
||||
@@ -1320,7 +1320,7 @@ void Application::Impl::on_prefs_changed(tr_quark const key)
|
||||
break;
|
||||
|
||||
case TR_KEY_script_torrent_done_seeding_filename:
|
||||
tr_sessionSetScript(tr, TR_SCRIPT_ON_TORRENT_DONE_SEEDING, gtr_pref_string_get(key).c_str());
|
||||
tr_sessionSetScript(tr, TR_SCRIPT_ON_TORRENT_DONE_SEEDING, gtr_pref_string_get(key));
|
||||
break;
|
||||
|
||||
case TR_KEY_start_added_torrents:
|
||||
|
||||
@@ -209,5 +209,5 @@ void gtr_pref_string_set(tr_quark const key, std::string_view value)
|
||||
|
||||
void gtr_pref_save(tr_session* session)
|
||||
{
|
||||
tr_sessionSaveSettings(session, gl_confdir.c_str(), getPrefs());
|
||||
tr_sessionSaveSettings(session, gl_confdir, getPrefs());
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ void bandwidthGroupRead(tr_session* session, std::string_view config_dir)
|
||||
}
|
||||
}
|
||||
|
||||
void bandwidthGroupWrite(tr_session const* session, std::string_view config_dir)
|
||||
void bandwidthGroupWrite(tr_session const* session, std::string_view const config_dir)
|
||||
{
|
||||
auto const& groups = session->bandwidthGroups();
|
||||
auto groups_map = tr_variant::Map{ std::size(groups) };
|
||||
@@ -504,7 +504,7 @@ tr_variant tr_sessionLoadSettings(std::string_view const config_dir, tr_variant
|
||||
return settings;
|
||||
}
|
||||
|
||||
void tr_sessionSaveSettings(tr_session* session, char const* config_dir, tr_variant const& client_settings)
|
||||
void tr_sessionSaveSettings(tr_session* session, std::string_view const config_dir, tr_variant const& client_settings)
|
||||
{
|
||||
using namespace bandwidth_group_helpers;
|
||||
|
||||
@@ -956,11 +956,11 @@ void tr_session::Settings::fixup_to_preferred_transports()
|
||||
|
||||
// ---
|
||||
|
||||
void tr_sessionSetDownloadDir(tr_session* session, char const* dir)
|
||||
void tr_sessionSetDownloadDir(tr_session* session, std::string_view const dir)
|
||||
{
|
||||
TR_ASSERT(session != nullptr);
|
||||
|
||||
session->setDownloadDir(dir != nullptr ? dir : "");
|
||||
session->setDownloadDir(dir);
|
||||
}
|
||||
|
||||
char const* tr_sessionGetDownloadDir(tr_session const* session)
|
||||
@@ -995,11 +995,11 @@ bool tr_sessionIsIncompleteFileNamingEnabled(tr_session const* session)
|
||||
|
||||
// ---
|
||||
|
||||
void tr_sessionSetIncompleteDir(tr_session* session, char const* dir)
|
||||
void tr_sessionSetIncompleteDir(tr_session* session, std::string_view const dir)
|
||||
{
|
||||
TR_ASSERT(session != nullptr);
|
||||
|
||||
session->setIncompleteDir(dir != nullptr ? dir : "");
|
||||
session->setIncompleteDir(dir);
|
||||
}
|
||||
|
||||
char const* tr_sessionGetIncompleteDir(tr_session const* session)
|
||||
@@ -1747,11 +1747,11 @@ void tr_session::setDefaultTrackers(std::string_view trackers)
|
||||
}
|
||||
}
|
||||
|
||||
void tr_sessionSetDefaultTrackers(tr_session* session, char const* trackers)
|
||||
void tr_sessionSetDefaultTrackers(tr_session* session, std::string_view const trackers)
|
||||
{
|
||||
TR_ASSERT(session != nullptr);
|
||||
|
||||
session->setDefaultTrackers(trackers != nullptr ? trackers : "");
|
||||
session->setDefaultTrackers(trackers);
|
||||
}
|
||||
|
||||
// ---
|
||||
@@ -1898,11 +1898,11 @@ void tr_sessionSetRPCCallback(tr_session* session, tr_rpc_func func, void* user_
|
||||
session->rpc_func_user_data_ = user_data;
|
||||
}
|
||||
|
||||
void tr_sessionSetRPCWhitelist(tr_session* session, char const* whitelist)
|
||||
void tr_sessionSetRPCWhitelist(tr_session* session, std::string_view const whitelist)
|
||||
{
|
||||
TR_ASSERT(session != nullptr);
|
||||
|
||||
session->setRpcWhitelist(whitelist != nullptr ? whitelist : "");
|
||||
session->setRpcWhitelist(whitelist);
|
||||
}
|
||||
|
||||
char const* tr_sessionGetRPCWhitelist(tr_session const* session)
|
||||
@@ -1926,11 +1926,11 @@ bool tr_sessionGetRPCWhitelistEnabled(tr_session const* session)
|
||||
return session->useRpcWhitelist();
|
||||
}
|
||||
|
||||
void tr_sessionSetRPCPassword(tr_session* session, char const* password)
|
||||
void tr_sessionSetRPCPassword(tr_session* session, std::string_view const password)
|
||||
{
|
||||
TR_ASSERT(session != nullptr);
|
||||
|
||||
session->rpc_server_->set_password(password != nullptr ? password : "");
|
||||
session->rpc_server_->set_password(password);
|
||||
}
|
||||
|
||||
char const* tr_sessionGetRPCPassword(tr_session const* session)
|
||||
@@ -1940,11 +1940,11 @@ char const* tr_sessionGetRPCPassword(tr_session const* session)
|
||||
return session->rpc_server_->get_salted_password().c_str();
|
||||
}
|
||||
|
||||
void tr_sessionSetRPCUsername(tr_session* session, char const* username)
|
||||
void tr_sessionSetRPCUsername(tr_session* session, std::string_view const username)
|
||||
{
|
||||
TR_ASSERT(session != nullptr);
|
||||
|
||||
session->rpc_server_->set_username(username != nullptr ? username : "");
|
||||
session->rpc_server_->set_username(username);
|
||||
}
|
||||
|
||||
char const* tr_sessionGetRPCUsername(tr_session const* session)
|
||||
@@ -1986,12 +1986,12 @@ bool tr_sessionIsScriptEnabled(tr_session const* session, TrScript type)
|
||||
return session->useScript(type);
|
||||
}
|
||||
|
||||
void tr_sessionSetScript(tr_session* session, TrScript type, char const* script)
|
||||
void tr_sessionSetScript(tr_session* session, TrScript type, std::string_view const script)
|
||||
{
|
||||
TR_ASSERT(session != nullptr);
|
||||
TR_ASSERT(type < TR_SCRIPT_N_TYPES);
|
||||
|
||||
session->setScript(type, script != nullptr ? script : "");
|
||||
session->setScript(type, script);
|
||||
}
|
||||
|
||||
char const* tr_sessionGetScript(tr_session const* session, TrScript type)
|
||||
|
||||
@@ -1313,10 +1313,10 @@ private:
|
||||
friend void tr_sessionSetQueueStalledMinutes(tr_session* session, int minutes);
|
||||
friend void tr_sessionSetRPCCallback(tr_session* session, tr_rpc_func func, void* user_data);
|
||||
friend void tr_sessionSetRPCEnabled(tr_session* session, bool is_enabled);
|
||||
friend void tr_sessionSetRPCPassword(tr_session* session, char const* password);
|
||||
friend void tr_sessionSetRPCPassword(tr_session* session, std::string_view password);
|
||||
friend void tr_sessionSetRPCPasswordEnabled(tr_session* session, bool enabled);
|
||||
friend void tr_sessionSetRPCPort(tr_session* session, uint16_t hport);
|
||||
friend void tr_sessionSetRPCUsername(tr_session* session, char const* username);
|
||||
friend void tr_sessionSetRPCUsername(tr_session* session, std::string_view username);
|
||||
friend void tr_sessionSetRatioLimit(tr_session* session, double desired_ratio);
|
||||
friend void tr_sessionSetRatioLimited(tr_session* session, bool is_limited);
|
||||
friend void tr_sessionSetUTPEnabled(tr_session* session, bool enabled);
|
||||
|
||||
@@ -185,7 +185,7 @@ tr_variant tr_sessionGetSettings(tr_session const* session);
|
||||
* @param client_settings the dictionary to save
|
||||
* @see `tr_sessionLoadSettings()`
|
||||
*/
|
||||
void tr_sessionSaveSettings(tr_session* session, char const* config_dir, tr_variant const& client_settings);
|
||||
void tr_sessionSaveSettings(tr_session* session, std::string_view config_dir, tr_variant const& client_settings);
|
||||
|
||||
/**
|
||||
* @brief Initialize a libtransmission session.
|
||||
@@ -247,7 +247,7 @@ char const* tr_sessionGetDownloadDir(tr_session const* session);
|
||||
* @see `tr_sessionGetDownloadDir()`
|
||||
* @see `tr_ctorSetDownloadDir()`
|
||||
*/
|
||||
void tr_sessionSetDownloadDir(tr_session* session, char const* download_dir);
|
||||
void tr_sessionSetDownloadDir(tr_session* session, std::string_view download_dir);
|
||||
|
||||
/** @brief get the per-session incomplete download folder */
|
||||
char const* tr_sessionGetIncompleteDir(tr_session const* session);
|
||||
@@ -271,7 +271,7 @@ char const* tr_sessionGetIncompleteDir(tr_session const* session);
|
||||
* @see `tr_sessionSetIncompleteDirEnabled()`
|
||||
* @see `tr_sessionGetIncompleteDirEnabled()`
|
||||
*/
|
||||
void tr_sessionSetIncompleteDir(tr_session* session, char const* dir);
|
||||
void tr_sessionSetIncompleteDir(tr_session* session, std::string_view dir);
|
||||
|
||||
/** @brief get whether or not the incomplete download folder is enabled */
|
||||
bool tr_sessionIsIncompleteDirEnabled(tr_session const* session);
|
||||
@@ -333,7 +333,7 @@ char const* tr_sessionGetRPCWhitelist(tr_session const* session);
|
||||
* `'?'` is interpreted as a single-character wildcard and
|
||||
* `'*'` is interpreted as a multi-character wildcard.
|
||||
*/
|
||||
void tr_sessionSetRPCWhitelist(tr_session* session, char const* whitelist);
|
||||
void tr_sessionSetRPCWhitelist(tr_session* session, std::string_view whitelist);
|
||||
|
||||
bool tr_sessionGetRPCWhitelistEnabled(tr_session const* session);
|
||||
void tr_sessionSetRPCWhitelistEnabled(tr_session* session, bool is_enabled);
|
||||
@@ -344,15 +344,15 @@ void tr_sessionSetRPCWhitelistEnabled(tr_session* session, bool is_enabled);
|
||||
@see `tr_sessionInit()`
|
||||
@see `tr_sessionSetRPCPassword()` */
|
||||
char const* tr_sessionGetRPCPassword(tr_session const* session);
|
||||
void tr_sessionSetRPCPassword(tr_session* session, char const* password);
|
||||
void tr_sessionSetRPCPassword(tr_session* session, std::string_view password);
|
||||
|
||||
char const* tr_sessionGetRPCUsername(tr_session const* session);
|
||||
void tr_sessionSetRPCUsername(tr_session* session, char const* username);
|
||||
void tr_sessionSetRPCUsername(tr_session* session, std::string_view username);
|
||||
|
||||
bool tr_sessionIsRPCPasswordEnabled(tr_session const* session);
|
||||
void tr_sessionSetRPCPasswordEnabled(tr_session* session, bool is_enabled);
|
||||
|
||||
void tr_sessionSetDefaultTrackers(tr_session* session, char const* trackers);
|
||||
void tr_sessionSetDefaultTrackers(tr_session* session, std::string_view trackers);
|
||||
|
||||
enum tr_rpc_callback_type : uint8_t
|
||||
{
|
||||
@@ -662,7 +662,7 @@ enum TrScript : uint8_t
|
||||
|
||||
char const* tr_sessionGetScript(tr_session const* session, TrScript type);
|
||||
|
||||
void tr_sessionSetScript(tr_session* session, TrScript type, char const* script_filename);
|
||||
void tr_sessionSetScript(tr_session* session, TrScript type, std::string_view script_filename);
|
||||
|
||||
bool tr_sessionIsScriptEnabled(tr_session const* session, TrScript type);
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@ void Session::updatePref(int key)
|
||||
case Prefs::RPC_PASSWORD:
|
||||
if (session_ != nullptr)
|
||||
{
|
||||
tr_sessionSetRPCPassword(session_, prefs_.get<QString>(key).toUtf8().constData());
|
||||
tr_sessionSetRPCPassword(session_, prefs_.get<QString>(key).toStdString());
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -235,7 +235,7 @@ void Session::updatePref(int key)
|
||||
case Prefs::RPC_USERNAME:
|
||||
if (session_ != nullptr)
|
||||
{
|
||||
tr_sessionSetRPCUsername(session_, prefs_.get<QString>(key).toUtf8().constData());
|
||||
tr_sessionSetRPCUsername(session_, prefs_.get<QString>(key).toStdString());
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -251,7 +251,7 @@ void Session::updatePref(int key)
|
||||
case Prefs::RPC_WHITELIST:
|
||||
if (session_ != nullptr)
|
||||
{
|
||||
tr_sessionSetRPCWhitelist(session_, prefs_.get<QString>(key).toUtf8().constData());
|
||||
tr_sessionSetRPCWhitelist(session_, prefs_.get<QString>(key).toStdString());
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -48,15 +48,11 @@ TEST_F(SessionTest, propertiesApi)
|
||||
EXPECT_EQ(value, session->downloadDir());
|
||||
EXPECT_EQ(value, tr_sessionGetDownloadDir(session));
|
||||
|
||||
tr_sessionSetDownloadDir(session, std::string(value).c_str());
|
||||
tr_sessionSetDownloadDir(session, value);
|
||||
EXPECT_EQ(value, session->downloadDir());
|
||||
EXPECT_EQ(value, tr_sessionGetDownloadDir(session));
|
||||
}
|
||||
|
||||
tr_sessionSetDownloadDir(session, nullptr);
|
||||
EXPECT_EQ(""sv, session->downloadDir());
|
||||
EXPECT_EQ(""sv, tr_sessionGetDownloadDir(session));
|
||||
|
||||
// incomplete dir
|
||||
|
||||
for (auto const& value : { "foo"sv, "bar"sv, ""sv })
|
||||
@@ -65,15 +61,11 @@ TEST_F(SessionTest, propertiesApi)
|
||||
EXPECT_EQ(value, session->incompleteDir());
|
||||
EXPECT_EQ(value, tr_sessionGetIncompleteDir(session));
|
||||
|
||||
tr_sessionSetIncompleteDir(session, std::string(value).c_str());
|
||||
tr_sessionSetIncompleteDir(session, value);
|
||||
EXPECT_EQ(value, session->incompleteDir());
|
||||
EXPECT_EQ(value, tr_sessionGetIncompleteDir(session));
|
||||
}
|
||||
|
||||
tr_sessionSetIncompleteDir(session, nullptr);
|
||||
EXPECT_EQ(""sv, session->incompleteDir());
|
||||
EXPECT_EQ(""sv, tr_sessionGetIncompleteDir(session));
|
||||
|
||||
// script
|
||||
|
||||
for (auto const& type : { TR_SCRIPT_ON_TORRENT_ADDED, TR_SCRIPT_ON_TORRENT_DONE })
|
||||
@@ -84,15 +76,11 @@ TEST_F(SessionTest, propertiesApi)
|
||||
EXPECT_EQ(value, session->script(type));
|
||||
EXPECT_EQ(value, tr_sessionGetScript(session, type));
|
||||
|
||||
tr_sessionSetScript(session, type, std::string(value).c_str());
|
||||
tr_sessionSetScript(session, type, value);
|
||||
EXPECT_EQ(value, session->script(type));
|
||||
EXPECT_EQ(value, tr_sessionGetScript(session, type));
|
||||
}
|
||||
|
||||
tr_sessionSetScript(session, type, nullptr);
|
||||
EXPECT_EQ(""sv, session->script(type));
|
||||
EXPECT_EQ(""sv, tr_sessionGetScript(session, type));
|
||||
|
||||
for (auto const value : { true, false })
|
||||
{
|
||||
session->useScript(type, value);
|
||||
@@ -139,18 +127,15 @@ TEST_F(SessionTest, propertiesApi)
|
||||
|
||||
for (auto const& value : { "foo"sv, "bar"sv, ""sv })
|
||||
{
|
||||
tr_sessionSetRPCUsername(session, std::string{ value }.c_str());
|
||||
tr_sessionSetRPCUsername(session, value);
|
||||
EXPECT_EQ(value, tr_sessionGetRPCUsername(session));
|
||||
}
|
||||
|
||||
tr_sessionSetRPCUsername(session, nullptr);
|
||||
EXPECT_EQ(""sv, tr_sessionGetRPCUsername(session));
|
||||
|
||||
// rpc password (unsalted)
|
||||
|
||||
{
|
||||
auto const value = "foo"sv;
|
||||
tr_sessionSetRPCPassword(session, std::string{ value }.c_str());
|
||||
tr_sessionSetRPCPassword(session, value);
|
||||
EXPECT_NE(value, tr_sessionGetRPCPassword(session));
|
||||
EXPECT_EQ('{', tr_sessionGetRPCPassword(session)[0]);
|
||||
}
|
||||
@@ -160,7 +145,7 @@ TEST_F(SessionTest, propertiesApi)
|
||||
{
|
||||
auto const plaintext = "foo"sv;
|
||||
auto const salted = tr_ssha1(plaintext);
|
||||
tr_sessionSetRPCPassword(session, salted.c_str());
|
||||
tr_sessionSetRPCPassword(session, salted);
|
||||
EXPECT_EQ(salted, tr_sessionGetRPCPassword(session));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user