fix: restore `files-wanted` argument of `torrent-set` (#6534)

* chore: drop redundant if branch

* chore: housekeeping

* refactor: always keep error message as the second

* fix: restore `files-wanted` argument of `torrent-set`
This commit is contained in:
Yat Ho 2024-01-22 04:41:13 +08:00 committed by GitHub
parent 7030b53e2e
commit 08b2fa7e35
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 8 additions and 13 deletions

View File

@ -143,10 +143,6 @@ void tr_idle_function_done(struct tr_rpc_idle_data* data, std::string_view resul
add_torrent_from_var(ids_var);
}
}
else if (auto const id_iter = args.find(TR_KEY_ids); id_iter != std::end(args))
{
add_torrent_from_var(id_iter->second);
}
else // all of them
{
torrents_vec = torrents.get_all();
@ -739,8 +735,7 @@ char const* torrentGet(tr_session* session, tr_variant::Map const& args_in, tr_v
}
auto keys = std::vector<tr_quark>{};
auto const* const fields_vec = args_in.find_if<tr_variant::Vector>(TR_KEY_fields);
if (fields_vec != nullptr)
if (auto const* const fields_vec = args_in.find_if<tr_variant::Vector>(TR_KEY_fields); fields_vec != nullptr)
{
auto const n_fields = std::size(*fields_vec);
keys.reserve(n_fields);
@ -811,7 +806,7 @@ char const* torrentGet(tr_session* session, tr_variant::Map const& args_in, tr_v
}
}
return { labels, nullptr };
return { std::move(labels), nullptr };
}
char const* set_labels(tr_torrent* tor, tr_variant::Vector const& list)
@ -827,7 +822,7 @@ char const* set_labels(tr_torrent* tor, tr_variant::Vector const& list)
return nullptr;
}
[[nodiscard]] std::pair<char const*, std::vector<tr_file_index_t>> get_file_indices(
[[nodiscard]] std::pair<std::vector<tr_file_index_t>, char const*> get_file_indices(
tr_torrent const* tor,
tr_variant::Vector const& files_vec)
{
@ -853,18 +848,18 @@ char const* set_labels(tr_torrent* tor, tr_variant::Vector const& list)
}
else
{
return { "file index out of range", {} };
return { {}, "file index out of range" };
}
}
}
}
return { nullptr, std::move(files) };
return { std::move(files), nullptr };
}
char const* set_file_priorities(tr_torrent* tor, tr_priority_t priority, tr_variant::Vector const& files_vec)
{
auto const [errmsg, indices] = get_file_indices(tor, files_vec);
auto const [indices, errmsg] = get_file_indices(tor, files_vec);
if (errmsg != nullptr)
{
return errmsg;
@ -876,7 +871,7 @@ char const* set_file_priorities(tr_torrent* tor, tr_priority_t priority, tr_vari
[[nodiscard]] char const* set_file_dls(tr_torrent* tor, bool wanted, tr_variant::Vector const& files_vec)
{
auto const [errmsg, indices] = get_file_indices(tor, files_vec);
auto const [indices, errmsg] = get_file_indices(tor, files_vec);
if (errmsg != nullptr)
{
return errmsg;
@ -985,7 +980,7 @@ char const* torrentSet(tr_session* session, tr_variant::Map const& args_in, tr_v
if (auto const* val = args_in.find_if<tr_variant::Vector>(TR_KEY_files_wanted); val != nullptr && errmsg == nullptr)
{
errmsg = set_file_dls(tor, false, *val);
errmsg = set_file_dls(tor, true, *val);
}
if (auto const* val = args_in.find_if<int64_t>(TR_KEY_peer_limit); val != nullptr)