refactor: sonarcloud "use if init" statements (#2587)
This commit is contained in:
parent
8afbfecadb
commit
ba14ffa74c
|
@ -475,52 +475,51 @@ void FileList::Impl::set_torrent(int torrentId)
|
||||||
torrent_id_ = torrentId;
|
torrent_id_ = torrentId;
|
||||||
|
|
||||||
/* populate the model */
|
/* populate the model */
|
||||||
auto* const tor = torrent_id_ > 0 ? core_->find_torrent(torrent_id_) : nullptr;
|
|
||||||
if (tor != nullptr)
|
|
||||||
{
|
|
||||||
// build a GNode tree of the files
|
|
||||||
FileRowNode root;
|
|
||||||
auto& root_data = root.data();
|
|
||||||
root_data.name = tr_torrentName(tor);
|
|
||||||
root_data.index = -1;
|
|
||||||
root_data.length = 0;
|
|
||||||
|
|
||||||
for (tr_file_index_t i = 0, n_files = tr_torrentFileCount(tor); i < n_files; ++i)
|
|
||||||
{
|
|
||||||
auto* parent = &root;
|
|
||||||
auto const file = tr_torrentFile(tor, i);
|
|
||||||
|
|
||||||
for (char const *last = file.name, *next = strchr(last, '/'); last != nullptr;
|
|
||||||
last = next != nullptr ? next + 1 : nullptr, next = last != nullptr ? strchr(last, '/') : nullptr)
|
|
||||||
{
|
|
||||||
bool const isLeaf = next == nullptr;
|
|
||||||
auto name = Glib::ustring(isLeaf ? last : std::string(last, next - last));
|
|
||||||
auto* node = find_child(parent, name);
|
|
||||||
|
|
||||||
if (node == nullptr)
|
|
||||||
{
|
|
||||||
node = new FileRowNode();
|
|
||||||
auto& row = node->data();
|
|
||||||
row.name = std::move(name);
|
|
||||||
row.index = isLeaf ? (int)i : -1;
|
|
||||||
row.length = isLeaf ? file.length : 0;
|
|
||||||
parent->append(*node);
|
|
||||||
}
|
|
||||||
|
|
||||||
parent = node;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// now, add them to the model
|
|
||||||
struct build_data build;
|
|
||||||
build.w = &widget_;
|
|
||||||
build.tor = tor;
|
|
||||||
build.store = store_;
|
|
||||||
root.foreach ([&build](auto& child_node) { buildTree(child_node, build); }, FileRowNode::TRAVERSE_ALL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (torrent_id_ > 0)
|
if (torrent_id_ > 0)
|
||||||
{
|
{
|
||||||
|
if (auto* const tor = core_->find_torrent(torrent_id_); tor != nullptr)
|
||||||
|
{
|
||||||
|
// build a GNode tree of the files
|
||||||
|
FileRowNode root;
|
||||||
|
auto& root_data = root.data();
|
||||||
|
root_data.name = tr_torrentName(tor);
|
||||||
|
root_data.index = -1;
|
||||||
|
root_data.length = 0;
|
||||||
|
|
||||||
|
for (tr_file_index_t i = 0, n_files = tr_torrentFileCount(tor); i < n_files; ++i)
|
||||||
|
{
|
||||||
|
auto* parent = &root;
|
||||||
|
auto const file = tr_torrentFile(tor, i);
|
||||||
|
|
||||||
|
for (char const *last = file.name, *next = strchr(last, '/'); last != nullptr;
|
||||||
|
last = next != nullptr ? next + 1 : nullptr, next = last != nullptr ? strchr(last, '/') : nullptr)
|
||||||
|
{
|
||||||
|
bool const isLeaf = next == nullptr;
|
||||||
|
auto name = Glib::ustring(isLeaf ? last : std::string(last, next - last));
|
||||||
|
auto* node = find_child(parent, name);
|
||||||
|
|
||||||
|
if (node == nullptr)
|
||||||
|
{
|
||||||
|
node = new FileRowNode();
|
||||||
|
auto& row = node->data();
|
||||||
|
row.name = std::move(name);
|
||||||
|
row.index = isLeaf ? (int)i : -1;
|
||||||
|
row.length = isLeaf ? file.length : 0;
|
||||||
|
parent->append(*node);
|
||||||
|
}
|
||||||
|
|
||||||
|
parent = node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// now, add them to the model
|
||||||
|
struct build_data build;
|
||||||
|
build.w = &widget_;
|
||||||
|
build.tor = tor;
|
||||||
|
build.store = store_;
|
||||||
|
root.foreach ([&build](auto& child_node) { buildTree(child_node, build); }, FileRowNode::TRAVERSE_ALL);
|
||||||
|
}
|
||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
timeout_tag_ = Glib::signal_timeout().connect_seconds(
|
timeout_tag_ = Glib::signal_timeout().connect_seconds(
|
||||||
[this]() { return refresh(), true; },
|
[this]() { return refresh(), true; },
|
||||||
|
@ -593,9 +592,8 @@ std::string buildFilename(tr_torrent const* tor, Gtk::TreeModel::iterator const&
|
||||||
void FileList::Impl::onRowActivated(Gtk::TreeModel::Path const& path, Gtk::TreeViewColumn* /*col*/)
|
void FileList::Impl::onRowActivated(Gtk::TreeModel::Path const& path, Gtk::TreeViewColumn* /*col*/)
|
||||||
{
|
{
|
||||||
bool handled = false;
|
bool handled = false;
|
||||||
auto const* tor = core_->find_torrent(torrent_id_);
|
|
||||||
|
|
||||||
if (tor != nullptr)
|
if (auto const* tor = core_->find_torrent(torrent_id_); tor != nullptr)
|
||||||
{
|
{
|
||||||
if (auto const iter = store_->get_iter(path); iter)
|
if (auto const iter = store_->get_iter(path); iter)
|
||||||
{
|
{
|
||||||
|
|
|
@ -95,10 +95,9 @@ auto const IdleDataKey = Glib::Quark("idle-data");
|
||||||
bool spun_cb_idle(Gtk::SpinButton* spin, tr_quark const key, Glib::RefPtr<Session> const& core, bool isDouble)
|
bool spun_cb_idle(Gtk::SpinButton* spin, tr_quark const key, Glib::RefPtr<Session> const& core, bool isDouble)
|
||||||
{
|
{
|
||||||
bool keep_waiting = true;
|
bool keep_waiting = true;
|
||||||
auto* last_change = static_cast<Glib::Timer*>(spin->get_data(IdleDataKey));
|
|
||||||
|
|
||||||
/* has the user stopped making changes? */
|
/* has the user stopped making changes? */
|
||||||
if (last_change->elapsed() > 0.33)
|
if (auto* last_change = static_cast<Glib::Timer*>(spin->get_data(IdleDataKey)); last_change->elapsed() > 0.33)
|
||||||
{
|
{
|
||||||
/* update the core */
|
/* update the core */
|
||||||
if (isDouble)
|
if (isDouble)
|
||||||
|
|
|
@ -271,29 +271,25 @@ bool is_valid_eta(int t)
|
||||||
|
|
||||||
int compare_eta(int a, int b)
|
int compare_eta(int a, int b)
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
|
|
||||||
bool const a_valid = is_valid_eta(a);
|
bool const a_valid = is_valid_eta(a);
|
||||||
bool const b_valid = is_valid_eta(b);
|
bool const b_valid = is_valid_eta(b);
|
||||||
|
|
||||||
if (!a_valid && !b_valid)
|
if (!a_valid && !b_valid)
|
||||||
{
|
{
|
||||||
ret = 0;
|
return 0;
|
||||||
}
|
|
||||||
else if (!a_valid)
|
|
||||||
{
|
|
||||||
ret = -1;
|
|
||||||
}
|
|
||||||
else if (!b_valid)
|
|
||||||
{
|
|
||||||
ret = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret = a < b ? 1 : -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
if (!a_valid)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!b_valid)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return a < b ? 1 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int compare_double(double a, double b)
|
int compare_double(double a, double b)
|
||||||
|
@ -1319,24 +1315,20 @@ namespace
|
||||||
|
|
||||||
int gtr_compare_double(double const a, double const b, int decimal_places)
|
int gtr_compare_double(double const a, double const b, int decimal_places)
|
||||||
{
|
{
|
||||||
int ret;
|
|
||||||
auto const ia = int64_t(a * pow(10, decimal_places));
|
auto const ia = int64_t(a * pow(10, decimal_places));
|
||||||
auto const ib = int64_t(b * pow(10, decimal_places));
|
auto const ib = int64_t(b * pow(10, decimal_places));
|
||||||
|
|
||||||
if (ia < ib)
|
if (ia < ib)
|
||||||
{
|
{
|
||||||
ret = -1;
|
return -1;
|
||||||
}
|
|
||||||
else if (ia > ib)
|
|
||||||
{
|
|
||||||
ret = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ret = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
if (ia > ib)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void update_foreach(Gtk::TreeModel::Row const& row)
|
void update_foreach(Gtk::TreeModel::Row const& row)
|
||||||
|
|
|
@ -143,33 +143,31 @@ Glib::ustring getShortTransferString(
|
||||||
double uploadSpeed_KBps,
|
double uploadSpeed_KBps,
|
||||||
double downloadSpeed_KBps)
|
double downloadSpeed_KBps)
|
||||||
{
|
{
|
||||||
Glib::ustring buf;
|
|
||||||
|
|
||||||
bool const haveMeta = tr_torrentHasMetadata(tor);
|
bool const haveMeta = tr_torrentHasMetadata(tor);
|
||||||
bool const haveUp = haveMeta && st->peersGettingFromUs > 0;
|
|
||||||
bool const haveDown = haveMeta && (st->peersSendingToUs > 0 || st->webseedsSendingToUs > 0);
|
|
||||||
|
|
||||||
if (haveDown)
|
if (bool const haveDown = haveMeta && (st->peersSendingToUs > 0 || st->webseedsSendingToUs > 0); haveDown)
|
||||||
{
|
{
|
||||||
/* down speed, down symbol, up speed, up symbol */
|
/* down speed, down symbol, up speed, up symbol */
|
||||||
buf += gtr_sprintf(
|
return gtr_sprintf(
|
||||||
_("%1$s %2$s %3$s %4$s"),
|
_("%1$s %2$s %3$s %4$s"),
|
||||||
tr_formatter_speed_KBps(downloadSpeed_KBps),
|
tr_formatter_speed_KBps(downloadSpeed_KBps),
|
||||||
gtr_get_unicode_string(GTR_UNICODE_DOWN),
|
gtr_get_unicode_string(GTR_UNICODE_DOWN),
|
||||||
tr_formatter_speed_KBps(uploadSpeed_KBps),
|
tr_formatter_speed_KBps(uploadSpeed_KBps),
|
||||||
gtr_get_unicode_string(GTR_UNICODE_UP));
|
gtr_get_unicode_string(GTR_UNICODE_UP));
|
||||||
}
|
}
|
||||||
else if (haveUp)
|
|
||||||
|
if (bool const haveUp = haveMeta && st->peersGettingFromUs > 0; haveUp)
|
||||||
{
|
{
|
||||||
/* up speed, up symbol */
|
/* up speed, up symbol */
|
||||||
buf += gtr_sprintf(_("%1$s %2$s"), tr_formatter_speed_KBps(uploadSpeed_KBps), gtr_get_unicode_string(GTR_UNICODE_UP));
|
return gtr_sprintf(_("%1$s %2$s"), tr_formatter_speed_KBps(uploadSpeed_KBps), gtr_get_unicode_string(GTR_UNICODE_UP));
|
||||||
}
|
|
||||||
else if (st->isStalled)
|
|
||||||
{
|
|
||||||
buf += _("Stalled");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return buf;
|
if (st->isStalled)
|
||||||
|
{
|
||||||
|
return _("Stalled");
|
||||||
|
}
|
||||||
|
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
Glib::ustring getShortStatusString(tr_torrent const* tor, tr_stat const* st, double uploadSpeed_KBps, double downloadSpeed_KBps)
|
Glib::ustring getShortStatusString(tr_torrent const* tor, tr_stat const* st, double uploadSpeed_KBps, double downloadSpeed_KBps)
|
||||||
|
|
|
@ -56,8 +56,7 @@ bool tr_announce_list::remove(tr_tracker_id_t id)
|
||||||
|
|
||||||
bool tr_announce_list::replace(tr_tracker_id_t id, std::string_view announce_url_sv)
|
bool tr_announce_list::replace(tr_tracker_id_t id, std::string_view announce_url_sv)
|
||||||
{
|
{
|
||||||
auto const announce = tr_urlParseTracker(announce_url_sv);
|
if (auto const announce = tr_urlParseTracker(announce_url_sv); !announce || !canAdd(*announce))
|
||||||
if (!announce || !canAdd(*announce))
|
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -337,9 +337,14 @@ static int compareAddressRangesByFirstAddress(void const* va, void const* vb)
|
||||||
auto const* a = static_cast<struct tr_ipv4_range const*>(va);
|
auto const* a = static_cast<struct tr_ipv4_range const*>(va);
|
||||||
auto const* b = static_cast<struct tr_ipv4_range const*>(vb);
|
auto const* b = static_cast<struct tr_ipv4_range const*>(vb);
|
||||||
|
|
||||||
if (a->begin != b->begin)
|
if (a->begin < b->begin)
|
||||||
{
|
{
|
||||||
return a->begin < b->begin ? -1 : 1;
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->begin > b->begin)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -356,9 +356,8 @@ int tr_cacheReadBlock(
|
||||||
uint8_t* setme)
|
uint8_t* setme)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
struct cache_block* cb = findBlock(cache, torrent, piece, offset);
|
|
||||||
|
|
||||||
if (cb != nullptr)
|
if (auto* const cb = findBlock(cache, torrent, piece, offset); cb != nullptr)
|
||||||
{
|
{
|
||||||
evbuffer_copyout(cb->evbuf, setme, len);
|
evbuffer_copyout(cb->evbuf, setme, len);
|
||||||
}
|
}
|
||||||
|
@ -373,9 +372,8 @@ int tr_cacheReadBlock(
|
||||||
int tr_cachePrefetchBlock(tr_cache* cache, tr_torrent* torrent, tr_piece_index_t piece, uint32_t offset, uint32_t len)
|
int tr_cachePrefetchBlock(tr_cache* cache, tr_torrent* torrent, tr_piece_index_t piece, uint32_t offset, uint32_t len)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
struct cache_block const* const cb = findBlock(cache, torrent, piece, offset);
|
|
||||||
|
|
||||||
if (cb == nullptr)
|
if (auto const* const cb = findBlock(cache, torrent, piece, offset); cb == nullptr)
|
||||||
{
|
{
|
||||||
err = tr_ioPrefetch(torrent, piece, offset, len);
|
err = tr_ioPrefetch(torrent, piece, offset, len);
|
||||||
}
|
}
|
||||||
|
|
|
@ -257,8 +257,7 @@ static handshake_parse_err_t parseHandshake(tr_handshake* handshake, struct evbu
|
||||||
/* peer id */
|
/* peer id */
|
||||||
dbgmsg(handshake, "peer-id is [%" TR_PRIsv "]", TR_PRIsv_ARG(peer_id));
|
dbgmsg(handshake, "peer-id is [%" TR_PRIsv "]", TR_PRIsv_ARG(peer_id));
|
||||||
|
|
||||||
auto* const tor = handshake->session->getTorrent(hash);
|
if (auto* const tor = handshake->session->getTorrent(hash); peer_id == tr_torrentGetPeerId(tor))
|
||||||
if (peer_id == tr_torrentGetPeerId(tor))
|
|
||||||
{
|
{
|
||||||
dbgmsg(handshake, "streuth! we've connected to ourselves.");
|
dbgmsg(handshake, "streuth! we've connected to ourselves.");
|
||||||
return HANDSHAKE_PEER_IS_SELF;
|
return HANDSHAKE_PEER_IS_SELF;
|
||||||
|
@ -855,9 +854,8 @@ static ReadState readCryptoProvide(tr_handshake* handshake, struct evbuffer* inb
|
||||||
static ReadState readPadC(tr_handshake* handshake, struct evbuffer* inbuf)
|
static ReadState readPadC(tr_handshake* handshake, struct evbuffer* inbuf)
|
||||||
{
|
{
|
||||||
uint16_t ia_len = 0;
|
uint16_t ia_len = 0;
|
||||||
size_t const needlen = handshake->pad_c_len + sizeof(uint16_t);
|
|
||||||
|
|
||||||
if (evbuffer_get_length(inbuf) < needlen)
|
if (auto const needlen = handshake->pad_c_len + sizeof(uint16_t); evbuffer_get_length(inbuf) < needlen)
|
||||||
{
|
{
|
||||||
return READ_LATER;
|
return READ_LATER;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2402,12 +2402,11 @@ static void closePeer(tr_peer* peer)
|
||||||
{
|
{
|
||||||
TR_ASSERT(peer != nullptr);
|
TR_ASSERT(peer != nullptr);
|
||||||
auto* const s = peer->swarm;
|
auto* const s = peer->swarm;
|
||||||
peer_atom* const atom = peer->atom;
|
|
||||||
|
|
||||||
/* if we transferred piece data, then they might be good peers,
|
/* if we transferred piece data, then they might be good peers,
|
||||||
so reset their `numFails' weight to zero. otherwise we connected
|
so reset their `numFails' weight to zero. otherwise we connected
|
||||||
to them fruitlessly, so mark it as another fail */
|
to them fruitlessly, so mark it as another fail */
|
||||||
if (atom->piece_data_time != 0)
|
if (auto* const atom = peer->atom; atom->piece_data_time != 0)
|
||||||
{
|
{
|
||||||
tordbg(s, "resetting atom %s numFails to 0", tr_atomAddrStr(atom));
|
tordbg(s, "resetting atom %s numFails to 0", tr_atomAddrStr(atom));
|
||||||
atom->numFails = 0;
|
atom->numFails = 0;
|
||||||
|
|
|
@ -2127,11 +2127,10 @@ static size_t fillOutputBuffer(tr_peerMsgsImpl* msgs, time_t now)
|
||||||
auto ok = bool{ false };
|
auto ok = bool{ false };
|
||||||
|
|
||||||
auto dataLen = size_t{};
|
auto dataLen = size_t{};
|
||||||
auto* data = static_cast<char*>(tr_torrentGetMetadataPiece(msgs->torrent, piece, &dataLen));
|
|
||||||
|
|
||||||
if (data != nullptr)
|
if (auto* data = static_cast<char*>(tr_torrentGetMetadataPiece(msgs->torrent, piece, &dataLen)); data != nullptr)
|
||||||
{
|
{
|
||||||
evbuffer* const out = msgs->outMessages;
|
auto* const out = msgs->outMessages;
|
||||||
|
|
||||||
/* build the data message */
|
/* build the data message */
|
||||||
auto tmp = tr_variant{};
|
auto tmp = tr_variant{};
|
||||||
|
|
|
@ -269,8 +269,7 @@ static std::string getXdgEntryFromUserDirs(std::string_view key)
|
||||||
|
|
||||||
// if val contains "$HOME", replace that with getHomeDir()
|
// if val contains "$HOME", replace that with getHomeDir()
|
||||||
auto constexpr Home = "$HOME"sv;
|
auto constexpr Home = "$HOME"sv;
|
||||||
auto const it = std::search(std::begin(val), std::end(val), std::begin(Home), std::end(Home));
|
if (auto const it = std::search(std::begin(val), std::end(val), std::begin(Home), std::end(Home)); it != std::end(val))
|
||||||
if (it != std::end(val))
|
|
||||||
{
|
{
|
||||||
val.replace(it, it + std::size(Home), std::string_view{ getHomeDir() });
|
val.replace(it, it + std::size(Home), std::string_view{ getHomeDir() });
|
||||||
}
|
}
|
||||||
|
@ -284,8 +283,7 @@ char const* tr_getDefaultDownloadDir()
|
||||||
|
|
||||||
if (user_dir == nullptr)
|
if (user_dir == nullptr)
|
||||||
{
|
{
|
||||||
auto const xdg_user_dir = getXdgEntryFromUserDirs("XDG_DOWNLOAD_DIR"sv);
|
if (auto const xdg_user_dir = getXdgEntryFromUserDirs("XDG_DOWNLOAD_DIR"sv); !std::empty(xdg_user_dir))
|
||||||
if (!std::empty(xdg_user_dir))
|
|
||||||
{
|
{
|
||||||
user_dir = tr_strvDup(xdg_user_dir);
|
user_dir = tr_strvDup(xdg_user_dir);
|
||||||
}
|
}
|
||||||
|
|
|
@ -573,9 +573,7 @@ static uint64_t loadProgress(tr_variant* dict, tr_torrent* tor)
|
||||||
|
|
||||||
auto blocks = tr_bitfield{ tor->blockCount() };
|
auto blocks = tr_bitfield{ tor->blockCount() };
|
||||||
char const* err = nullptr;
|
char const* err = nullptr;
|
||||||
auto sv = std::string_view{};
|
if (tr_variant const* const b = tr_variantDictFind(prog, TR_KEY_blocks); b != nullptr)
|
||||||
tr_variant const* const b = tr_variantDictFind(prog, TR_KEY_blocks);
|
|
||||||
if (b != nullptr)
|
|
||||||
{
|
{
|
||||||
uint8_t const* buf = nullptr;
|
uint8_t const* buf = nullptr;
|
||||||
auto buflen = size_t{};
|
auto buflen = size_t{};
|
||||||
|
@ -589,7 +587,7 @@ static uint64_t loadProgress(tr_variant* dict, tr_torrent* tor)
|
||||||
rawToBitfield(blocks, buf, buflen);
|
rawToBitfield(blocks, buf, buflen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (tr_variantDictFindStrView(prog, TR_KEY_have, &sv))
|
else if (auto sv = std::string_view{}; tr_variantDictFindStrView(prog, TR_KEY_have, &sv))
|
||||||
{
|
{
|
||||||
if (sv == "all"sv)
|
if (sv == "all"sv)
|
||||||
{
|
{
|
||||||
|
|
|
@ -237,8 +237,7 @@ static void handle_web_client(struct evhttp_request* req, tr_rpc_server* server)
|
||||||
{
|
{
|
||||||
// TODO: string_view
|
// TODO: string_view
|
||||||
char* const subpath = tr_strdup(req->uri + std::size(server->url) + 4);
|
char* const subpath = tr_strdup(req->uri + std::size(server->url) + 4);
|
||||||
char* pch = strchr(subpath, '?');
|
if (char* pch = strchr(subpath, '?'); pch != nullptr)
|
||||||
if (pch != nullptr)
|
|
||||||
{
|
{
|
||||||
*pch = '\0';
|
*pch = '\0';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1316,8 +1316,7 @@ static char const* torrentRenamePath(
|
||||||
auto newname = std::string_view{};
|
auto newname = std::string_view{};
|
||||||
(void)tr_variantDictFindStrView(args_in, TR_KEY_name, &newname);
|
(void)tr_variantDictFindStrView(args_in, TR_KEY_name, &newname);
|
||||||
|
|
||||||
auto const torrents = getTorrents(session, args_in);
|
if (auto const torrents = getTorrents(session, args_in); std::size(torrents) == 1)
|
||||||
if (std::size(torrents) == 1)
|
|
||||||
{
|
{
|
||||||
torrents[0]->renamePath(oldpath, newname, torrentRenamePathDone, idle_data);
|
torrents[0]->renamePath(oldpath, newname, torrentRenamePathDone, idle_data);
|
||||||
}
|
}
|
||||||
|
@ -2265,8 +2264,7 @@ static void addSessionField(tr_session* s, tr_variant* d, tr_quark key)
|
||||||
|
|
||||||
static char const* sessionGet(tr_session* s, tr_variant* args_in, tr_variant* args_out, tr_rpc_idle_data* /*idle_data*/)
|
static char const* sessionGet(tr_session* s, tr_variant* args_in, tr_variant* args_out, tr_rpc_idle_data* /*idle_data*/)
|
||||||
{
|
{
|
||||||
tr_variant* fields = nullptr;
|
if (tr_variant* fields = nullptr; tr_variantDictFindList(args_in, TR_KEY_fields, &fields))
|
||||||
if (tr_variantDictFindList(args_in, TR_KEY_fields, &fields))
|
|
||||||
{
|
{
|
||||||
size_t const field_count = tr_variantListSize(fields);
|
size_t const field_count = tr_variantListSize(fields);
|
||||||
|
|
||||||
|
@ -2427,8 +2425,7 @@ void tr_rpc_request_exec_json(
|
||||||
tr_variantDictAddDict(&response, TR_KEY_arguments, 0);
|
tr_variantDictAddDict(&response, TR_KEY_arguments, 0);
|
||||||
tr_variantDictAddStr(&response, TR_KEY_result, result);
|
tr_variantDictAddStr(&response, TR_KEY_result, result);
|
||||||
|
|
||||||
auto tag = int64_t{};
|
if (auto tag = int64_t{}; tr_variantDictFindInt(mutable_request, TR_KEY_tag, &tag))
|
||||||
if (tr_variantDictFindInt(mutable_request, TR_KEY_tag, &tag))
|
|
||||||
{
|
{
|
||||||
tr_variantDictAddInt(&response, TR_KEY_tag, tag);
|
tr_variantDictAddInt(&response, TR_KEY_tag, tag);
|
||||||
}
|
}
|
||||||
|
@ -2451,8 +2448,7 @@ void tr_rpc_request_exec_json(
|
||||||
|
|
||||||
tr_variantDictAddStr(&response, TR_KEY_result, result);
|
tr_variantDictAddStr(&response, TR_KEY_result, result);
|
||||||
|
|
||||||
auto tag = int64_t{};
|
if (auto tag = int64_t{}; tr_variantDictFindInt(mutable_request, TR_KEY_tag, &tag))
|
||||||
if (tr_variantDictFindInt(mutable_request, TR_KEY_tag, &tag))
|
|
||||||
{
|
{
|
||||||
tr_variantDictAddInt(&response, TR_KEY_tag, tag);
|
tr_variantDictAddInt(&response, TR_KEY_tag, tag);
|
||||||
}
|
}
|
||||||
|
@ -2468,8 +2464,7 @@ void tr_rpc_request_exec_json(
|
||||||
data->response = tr_new0(tr_variant, 1);
|
data->response = tr_new0(tr_variant, 1);
|
||||||
tr_variantInitDict(data->response, 3);
|
tr_variantInitDict(data->response, 3);
|
||||||
|
|
||||||
auto tag = int64_t{};
|
if (auto tag = int64_t{}; tr_variantDictFindInt(mutable_request, TR_KEY_tag, &tag))
|
||||||
if (tr_variantDictFindInt(mutable_request, TR_KEY_tag, &tag))
|
|
||||||
{
|
{
|
||||||
tr_variantDictAddInt(data->response, TR_KEY_tag, tag);
|
tr_variantDictAddInt(data->response, TR_KEY_tag, tag);
|
||||||
}
|
}
|
||||||
|
|
|
@ -600,8 +600,7 @@ tr_session* tr_sessionInit(char const* config_dir, bool messageQueuingEnabled, t
|
||||||
session->removed_torrents.clear();
|
session->removed_torrents.clear();
|
||||||
|
|
||||||
/* nice to start logging at the very beginning */
|
/* nice to start logging at the very beginning */
|
||||||
auto i = int64_t{};
|
if (auto i = int64_t{}; tr_variantDictFindInt(clientSettings, TR_KEY_message_level, &i))
|
||||||
if (tr_variantDictFindInt(clientSettings, TR_KEY_message_level, &i))
|
|
||||||
{
|
{
|
||||||
tr_logSetLevel(tr_log_level(i));
|
tr_logSetLevel(tr_log_level(i));
|
||||||
}
|
}
|
||||||
|
@ -2307,9 +2306,8 @@ static void loadBlocklists(tr_session* session)
|
||||||
if (!tr_sys_path_get_info(binname.c_str(), 0, &binname_info, nullptr)) /* create it */
|
if (!tr_sys_path_get_info(binname.c_str(), 0, &binname_info, nullptr)) /* create it */
|
||||||
{
|
{
|
||||||
tr_blocklistFile* b = tr_blocklistFileNew(binname.c_str(), isEnabled);
|
tr_blocklistFile* b = tr_blocklistFileNew(binname.c_str(), isEnabled);
|
||||||
int const n = tr_blocklistFileSetContent(b, path.c_str());
|
|
||||||
|
|
||||||
if (n > 0)
|
if (auto const n = tr_blocklistFileSetContent(b, path.c_str()); n > 0)
|
||||||
{
|
{
|
||||||
load = binname;
|
load = binname;
|
||||||
}
|
}
|
||||||
|
|
|
@ -140,9 +140,8 @@ void* tr_torrentGetMetadataPiece(tr_torrent const* tor, int piece, size_t* len)
|
||||||
if (0 < l && l <= METADATA_PIECE_SIZE)
|
if (0 < l && l <= METADATA_PIECE_SIZE)
|
||||||
{
|
{
|
||||||
auto* buf = tr_new(char, l);
|
auto* buf = tr_new(char, l);
|
||||||
auto n = uint64_t{};
|
|
||||||
|
|
||||||
if (tr_sys_file_read(fd, buf, l, &n, nullptr) && n == l)
|
if (auto n = uint64_t{}; tr_sys_file_read(fd, buf, l, &n, nullptr) && n == l)
|
||||||
{
|
{
|
||||||
*len = l;
|
*len = l;
|
||||||
ret = buf;
|
ret = buf;
|
||||||
|
@ -274,8 +273,7 @@ static bool useNewMetainfo(tr_torrent* tor, tr_incomplete_metadata const* m, tr_
|
||||||
}
|
}
|
||||||
|
|
||||||
// save it
|
// save it
|
||||||
auto const filename = tor->torrentFile();
|
if (auto const filename = tor->torrentFile(); !tr_saveFile(filename, benc, error))
|
||||||
if (!tr_saveFile(filename, benc, error))
|
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -336,8 +336,7 @@ static bool tr_torrentGetSeedRatioBytes(tr_torrent const* tor, uint64_t* setme_l
|
||||||
|
|
||||||
TR_ASSERT(tr_isTorrent(tor));
|
TR_ASSERT(tr_isTorrent(tor));
|
||||||
|
|
||||||
auto seed_ratio = double{};
|
if (auto seed_ratio = double{}; tr_torrentGetSeedRatio(tor, &seed_ratio))
|
||||||
if (tr_torrentGetSeedRatio(tor, &seed_ratio))
|
|
||||||
{
|
{
|
||||||
auto const uploaded = tor->uploadedCur + tor->uploadedPrev;
|
auto const uploaded = tor->uploadedCur + tor->uploadedPrev;
|
||||||
auto const baseline = tor->totalSize();
|
auto const baseline = tor->totalSize();
|
||||||
|
@ -2342,8 +2341,8 @@ static void setLocationImpl(void* vdata)
|
||||||
auto const file_size = tor->fileSize(i);
|
auto const file_size = tor->fileSize(i);
|
||||||
|
|
||||||
char const* oldbase = nullptr;
|
char const* oldbase = nullptr;
|
||||||
char* sub = nullptr;
|
|
||||||
if (tr_torrentFindFile2(tor, i, &oldbase, &sub, nullptr))
|
if (char* sub = nullptr; tr_torrentFindFile2(tor, i, &oldbase, &sub, nullptr))
|
||||||
{
|
{
|
||||||
auto const oldpath = tr_strvPath(oldbase, sub);
|
auto const oldpath = tr_strvPath(oldbase, sub);
|
||||||
auto const newpath = tr_strvPath(location, sub);
|
auto const newpath = tr_strvPath(location, sub);
|
||||||
|
|
|
@ -107,8 +107,7 @@ static void bootstrap_from_name(char const* name, tr_port port, int af)
|
||||||
tr_snprintf(pp, sizeof(pp), "%d", (int)port);
|
tr_snprintf(pp, sizeof(pp), "%d", (int)port);
|
||||||
|
|
||||||
addrinfo* info = nullptr;
|
addrinfo* info = nullptr;
|
||||||
int const rc = getaddrinfo(name, pp, &hints, &info);
|
if (int const rc = getaddrinfo(name, pp, &hints, &info); rc != 0)
|
||||||
if (rc != 0)
|
|
||||||
{
|
{
|
||||||
tr_logAddNamedError("DHT", "%s:%s: %s", name, pp, gai_strerror(rc));
|
tr_logAddNamedError("DHT", "%s:%s: %s", name, pp, gai_strerror(rc));
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -62,11 +62,11 @@ static void getopts_usage_line(tr_option const* opt, int longWidth, int shortWid
|
||||||
|
|
||||||
auto const strip_leading_whitespace = [](std::string_view text)
|
auto const strip_leading_whitespace = [](std::string_view text)
|
||||||
{
|
{
|
||||||
auto pos = text.find_first_not_of(' ');
|
if (auto pos = text.find_first_not_of(' '); pos != std::string_view::npos)
|
||||||
if (pos != std::string_view::npos)
|
|
||||||
{
|
{
|
||||||
text.remove_prefix(pos);
|
text.remove_prefix(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
return text;
|
return text;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -59,8 +59,7 @@ std::optional<int64_t> ParseInt(std::string_view* benc)
|
||||||
|
|
||||||
// find the ending delimiter
|
// find the ending delimiter
|
||||||
walk.remove_prefix(std::size(Prefix));
|
walk.remove_prefix(std::size(Prefix));
|
||||||
auto const pos = walk.find(Suffix);
|
if (auto const pos = walk.find(Suffix); pos == std::string_view::npos)
|
||||||
if (pos == std::string_view::npos)
|
|
||||||
{
|
{
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
|
@ -450,8 +450,7 @@ static void jsonChildFunc(struct jsonWalk* data)
|
||||||
case TR_VARIANT_TYPE_LIST:
|
case TR_VARIANT_TYPE_LIST:
|
||||||
{
|
{
|
||||||
++pstate.childIndex;
|
++pstate.childIndex;
|
||||||
bool const is_last = pstate.childIndex == pstate.childCount;
|
if (bool const is_last = pstate.childIndex == pstate.childCount; !is_last)
|
||||||
if (!is_last)
|
|
||||||
{
|
{
|
||||||
evbuffer_add(data->out, ",", 1);
|
evbuffer_add(data->out, ",", 1);
|
||||||
jsonIndent(data);
|
jsonIndent(data);
|
||||||
|
|
|
@ -354,8 +354,7 @@ bool tr_variantGetBool(tr_variant const* v, bool* setme)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto sv = std::string_view{};
|
if (auto sv = std::string_view{}; tr_variantGetStrView(v, &sv))
|
||||||
if (tr_variantGetStrView(v, &sv))
|
|
||||||
{
|
{
|
||||||
if (sv == "true"sv)
|
if (sv == "true"sv)
|
||||||
{
|
{
|
||||||
|
@ -731,9 +730,8 @@ tr_variant* tr_variantDictSteal(tr_variant* dict, tr_quark const key, tr_variant
|
||||||
bool tr_variantDictRemove(tr_variant* dict, tr_quark const key)
|
bool tr_variantDictRemove(tr_variant* dict, tr_quark const key)
|
||||||
{
|
{
|
||||||
bool removed = false;
|
bool removed = false;
|
||||||
int const i = dictIndexOf(dict, key);
|
|
||||||
|
|
||||||
if (i >= 0)
|
if (int const i = dictIndexOf(dict, key); i >= 0)
|
||||||
{
|
{
|
||||||
int const last = (int)dict->val.l.count - 1;
|
int const last = (int)dict->val.l.count - 1;
|
||||||
|
|
||||||
|
|
|
@ -304,8 +304,7 @@ std::optional<tr_url_parsed_t> tr_urlParse(std::string_view url)
|
||||||
// So many magnet links are malformed, e.g. not escaping text
|
// So many magnet links are malformed, e.g. not escaping text
|
||||||
// in the display name, that we're better off handling magnets
|
// in the display name, that we're better off handling magnets
|
||||||
// as a special case before even scanning for invalid chars.
|
// as a special case before even scanning for invalid chars.
|
||||||
auto constexpr MagnetStart = "magnet:?"sv;
|
if (auto constexpr MagnetStart = "magnet:?"sv; tr_strvStartsWith(url, MagnetStart))
|
||||||
if (tr_strvStartsWith(url, MagnetStart))
|
|
||||||
{
|
{
|
||||||
parsed.scheme = "magnet"sv;
|
parsed.scheme = "magnet"sv;
|
||||||
parsed.query = url.substr(std::size(MagnetStart));
|
parsed.query = url.substr(std::size(MagnetStart));
|
||||||
|
|
|
@ -82,10 +82,9 @@ int measureViewItem(QTreeWidget const* view, int column, QString const& text)
|
||||||
|
|
||||||
QString collateAddress(QString const& address)
|
QString collateAddress(QString const& address)
|
||||||
{
|
{
|
||||||
QString collated;
|
auto collated = QString{};
|
||||||
|
|
||||||
QHostAddress ip_address;
|
if (auto ip_address = QHostAddress{}; ip_address.setAddress(address))
|
||||||
if (ip_address.setAddress(address))
|
|
||||||
{
|
{
|
||||||
if (ip_address.protocol() == QAbstractSocket::IPv4Protocol)
|
if (ip_address.protocol() == QAbstractSocket::IPv4Protocol)
|
||||||
{
|
{
|
||||||
|
|
|
@ -332,14 +332,14 @@ void FileTreeModel::addFile(
|
||||||
|
|
||||||
while (filename_it.hasNext())
|
while (filename_it.hasNext())
|
||||||
{
|
{
|
||||||
QString const& token = filename_it.next();
|
auto const& token = filename_it.next();
|
||||||
std::pair<int, int> const changed = item->update(token, wanted, priority, have, update_fields);
|
auto const& [first_col, last_col] = item->update(token, wanted, priority, have, update_fields);
|
||||||
|
|
||||||
if (changed.first >= 0)
|
if (first_col >= 0)
|
||||||
{
|
{
|
||||||
emit dataChanged(indexOf(item, changed.first), indexOf(item, changed.second));
|
emit dataChanged(indexOf(item, first_col), indexOf(item, last_col));
|
||||||
|
|
||||||
if (!index_with_changed_parents.isValid() && changed.first <= COL_PRIORITY && changed.second >= COL_SIZE)
|
if (!index_with_changed_parents.isValid() && first_col <= COL_PRIORITY && last_col >= COL_SIZE)
|
||||||
{
|
{
|
||||||
index_with_changed_parents = indexOf(item, 0);
|
index_with_changed_parents = indexOf(item, 0);
|
||||||
}
|
}
|
||||||
|
@ -398,11 +398,11 @@ void FileTreeModel::addFile(
|
||||||
|
|
||||||
index_cache_[file_index] = item;
|
index_cache_[file_index] = item;
|
||||||
|
|
||||||
std::pair<int, int> const changed = item->update(item->name(), wanted, priority, have, added || update_fields);
|
auto const [first_col, last_col] = item->update(item->name(), wanted, priority, have, added || update_fields);
|
||||||
|
|
||||||
if (changed.first >= 0)
|
if (first_col >= 0)
|
||||||
{
|
{
|
||||||
emit dataChanged(indexOf(item, changed.first), indexOf(item, changed.second));
|
emit dataChanged(indexOf(item, first_col), indexOf(item, last_col));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,7 +156,7 @@ void FileTreeView::keyPressEvent(QKeyEvent* event)
|
||||||
|
|
||||||
void FileTreeView::mouseDoubleClickEvent(QMouseEvent* event)
|
void FileTreeView::mouseDoubleClickEvent(QMouseEvent* event)
|
||||||
{
|
{
|
||||||
QModelIndex const index = currentIndex();
|
auto const index = currentIndex();
|
||||||
|
|
||||||
if (!index.isValid() || index.column() == FileTreeModel::COL_WANTED || index.column() == FileTreeModel::COL_PRIORITY)
|
if (!index.isValid() || index.column() == FileTreeModel::COL_WANTED || index.column() == FileTreeModel::COL_PRIORITY)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue