refactor: tr_variant*Str() functions now take a std::string_view (#1990)
* refactor tr_variant*Str functions now take a std::string_view * refactor: tr_torrentPrimaryMimeType returns a string-view
This commit is contained in:
parent
0b1e12ac5b
commit
236a0965fa
|
@ -10,7 +10,6 @@
|
|||
#include <stdio.h> /* printf */
|
||||
#include <stdlib.h> /* atoi */
|
||||
#include <string_view>
|
||||
#include <typeinfo>
|
||||
|
||||
#ifdef HAVE_SYSLOG
|
||||
#include <syslog.h>
|
||||
|
|
25
gtk/conf.cc
25
gtk/conf.cc
|
@ -24,6 +24,7 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h> /* strtol() */
|
||||
#include <string.h>
|
||||
#include <string_view>
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
|
@ -39,6 +40,8 @@
|
|||
|
||||
#define MY_CONFIG_NAME "transmission"
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
std::string gl_confdir;
|
||||
|
||||
void gtr_pref_init(std::string const& config_dir)
|
||||
|
@ -71,12 +74,12 @@ static void tr_prefs_init_defaults(tr_variant* d)
|
|||
}
|
||||
|
||||
tr_variantDictReserve(d, 31);
|
||||
tr_variantDictAddStr(d, TR_KEY_watch_dir, dir.c_str());
|
||||
tr_variantDictAddStr(d, TR_KEY_watch_dir, dir);
|
||||
tr_variantDictAddBool(d, TR_KEY_watch_dir_enabled, false);
|
||||
tr_variantDictAddBool(d, TR_KEY_user_has_given_informed_consent, false);
|
||||
tr_variantDictAddBool(d, TR_KEY_inhibit_desktop_hibernation, false);
|
||||
tr_variantDictAddBool(d, TR_KEY_blocklist_updates_enabled, true);
|
||||
tr_variantDictAddStr(d, TR_KEY_open_dialog_dir, Glib::get_home_dir().c_str());
|
||||
tr_variantDictAddStr(d, TR_KEY_open_dialog_dir, Glib::get_home_dir());
|
||||
tr_variantDictAddBool(d, TR_KEY_show_toolbar, true);
|
||||
tr_variantDictAddBool(d, TR_KEY_show_filterbar, true);
|
||||
tr_variantDictAddBool(d, TR_KEY_show_statusbar, true);
|
||||
|
@ -85,7 +88,7 @@ static void tr_prefs_init_defaults(tr_variant* d)
|
|||
tr_variantDictAddBool(d, TR_KEY_show_tracker_scrapes, false);
|
||||
tr_variantDictAddBool(d, TR_KEY_show_extra_peer_details, false);
|
||||
tr_variantDictAddBool(d, TR_KEY_show_backup_trackers, false);
|
||||
tr_variantDictAddStr(d, TR_KEY_statusbar_stats, "total-ratio");
|
||||
tr_variantDictAddStr(d, TR_KEY_statusbar_stats, "total-ratio"sv);
|
||||
tr_variantDictAddBool(d, TR_KEY_torrent_added_notification_enabled, true);
|
||||
tr_variantDictAddBool(d, TR_KEY_torrent_complete_notification_enabled, true);
|
||||
tr_variantDictAddBool(d, TR_KEY_torrent_complete_sound_enabled, true);
|
||||
|
@ -97,8 +100,8 @@ static void tr_prefs_init_defaults(tr_variant* d)
|
|||
tr_variantDictAddInt(d, TR_KEY_main_window_y, 50);
|
||||
tr_variantDictAddInt(d, TR_KEY_details_window_height, 500);
|
||||
tr_variantDictAddInt(d, TR_KEY_details_window_width, 700);
|
||||
tr_variantDictAddStr(d, TR_KEY_download_dir, dir.c_str());
|
||||
tr_variantDictAddStr(d, TR_KEY_sort_mode, "sort-by-name");
|
||||
tr_variantDictAddStr(d, TR_KEY_download_dir, dir);
|
||||
tr_variantDictAddStr(d, TR_KEY_sort_mode, "sort-by-name"sv);
|
||||
tr_variantDictAddBool(d, TR_KEY_sort_reversed, false);
|
||||
tr_variantDictAddBool(d, TR_KEY_compact_view, false);
|
||||
}
|
||||
|
@ -114,11 +117,11 @@ static void ensure_sound_cmd_is_a_list(tr_variant* dict)
|
|||
|
||||
tr_variantDictRemove(dict, key);
|
||||
list = tr_variantDictAddList(dict, key, 5);
|
||||
tr_variantListAddStr(list, "canberra-gtk-play");
|
||||
tr_variantListAddStr(list, "-i");
|
||||
tr_variantListAddStr(list, "complete-download");
|
||||
tr_variantListAddStr(list, "-d");
|
||||
tr_variantListAddStr(list, "transmission torrent downloaded");
|
||||
tr_variantListAddStr(list, "canberra-gtk-play"sv);
|
||||
tr_variantListAddStr(list, "-i"sv);
|
||||
tr_variantListAddStr(list, "complete-download"sv);
|
||||
tr_variantListAddStr(list, "-d"sv);
|
||||
tr_variantListAddStr(list, "transmission torrent downloaded"sv);
|
||||
}
|
||||
|
||||
static tr_variant* getPrefs()
|
||||
|
@ -224,7 +227,7 @@ std::string gtr_pref_string_get(tr_quark const key)
|
|||
|
||||
void gtr_pref_string_set(tr_quark const key, std::string const& value)
|
||||
{
|
||||
tr_variantDictAddStr(getPrefs(), key, value.c_str());
|
||||
tr_variantDictAddStr(getPrefs(), key, value);
|
||||
}
|
||||
|
||||
/***
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <stddef.h>
|
||||
#include <stdio.h> /* sscanf() */
|
||||
#include <stdlib.h> /* abort() */
|
||||
#include <string_view>
|
||||
#include <unordered_map>
|
||||
|
||||
#include <glibmm/i18n.h>
|
||||
|
@ -29,6 +30,8 @@
|
|||
#include "tr-prefs.h"
|
||||
#include "util.h"
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
|
@ -393,7 +396,7 @@ void DetailsDialog::Impl::torrent_set_bool(tr_quark key, bool value)
|
|||
tr_variant top;
|
||||
|
||||
tr_variantInitDict(&top, 2);
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set");
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set"sv);
|
||||
tr_variant* const args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2);
|
||||
tr_variantDictAddBool(args, key, value);
|
||||
tr_variant* const ids = tr_variantDictAddList(args, TR_KEY_ids, ids_.size());
|
||||
|
@ -412,7 +415,7 @@ void DetailsDialog::Impl::torrent_set_int(tr_quark key, int value)
|
|||
tr_variant top;
|
||||
|
||||
tr_variantInitDict(&top, 2);
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set");
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set"sv);
|
||||
tr_variant* const args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2);
|
||||
tr_variantDictAddInt(args, key, value);
|
||||
tr_variant* const ids = tr_variantDictAddList(args, TR_KEY_ids, ids_.size());
|
||||
|
@ -431,7 +434,7 @@ void DetailsDialog::Impl::torrent_set_real(tr_quark key, double value)
|
|||
tr_variant top;
|
||||
|
||||
tr_variantInitDict(&top, 2);
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set");
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set"sv);
|
||||
tr_variant* const args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2);
|
||||
tr_variantDictAddReal(args, key, value);
|
||||
tr_variant* const ids = tr_variantDictAddList(args, TR_KEY_ids, ids_.size());
|
||||
|
@ -2369,11 +2372,11 @@ void DetailsDialog::Impl::on_add_tracker_response(int response, Gtk::Dialog* dia
|
|||
tr_variant* trackers;
|
||||
|
||||
tr_variantInitDict(&top, 2);
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set");
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set"sv);
|
||||
args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2);
|
||||
tr_variantDictAddInt(args, TR_KEY_id, torrent_id);
|
||||
trackers = tr_variantDictAddList(args, TR_KEY_trackerAdd, 1);
|
||||
tr_variantListAddStr(trackers, url.c_str());
|
||||
tr_variantListAddStr(trackers, url.raw());
|
||||
|
||||
core_->exec(&top);
|
||||
refresh();
|
||||
|
@ -2439,7 +2442,7 @@ void DetailsDialog::Impl::on_tracker_list_remove_button_clicked()
|
|||
tr_variant* trackers;
|
||||
|
||||
tr_variantInitDict(&top, 2);
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set");
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set"sv);
|
||||
args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2);
|
||||
tr_variantDictAddInt(args, TR_KEY_id, torrent_id);
|
||||
trackers = tr_variantDictAddList(args, TR_KEY_trackerRemove, 1);
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include <string>
|
||||
#include <time.h>
|
||||
#include <vector>
|
||||
#include <string_view>
|
||||
|
||||
#include <giomm.h>
|
||||
#include <glib/gmessages.h>
|
||||
|
@ -60,6 +61,8 @@
|
|||
#include "tr-window.h"
|
||||
#include "util.h"
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
#define MY_CONFIG_NAME "transmission"
|
||||
#define MY_READABLE_NAME "transmission-gtk"
|
||||
|
||||
|
@ -1350,7 +1353,7 @@ bool Application::call_rpc_for_selected_torrents(std::string const& method)
|
|||
auto* session = core_->get_session();
|
||||
|
||||
tr_variantInitDict(&top, 2);
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, method.c_str());
|
||||
tr_variantDictAddStr(&top, TR_KEY_method, method);
|
||||
args = tr_variantDictAddDict(&top, TR_KEY_arguments, 1);
|
||||
ids = tr_variantDictAddList(args, TR_KEY_ids, 0);
|
||||
sel_->selected_foreach(
|
||||
|
@ -1394,7 +1397,7 @@ void Application::start_all_torrents()
|
|||
tr_variant request;
|
||||
|
||||
tr_variantInitDict(&request, 1);
|
||||
tr_variantDictAddStr(&request, TR_KEY_method, "torrent-start");
|
||||
tr_variantDictAddStr(&request, TR_KEY_method, "torrent-start"sv);
|
||||
tr_rpc_request_exec_json(session, &request, nullptr, nullptr);
|
||||
tr_variantFree(&request);
|
||||
}
|
||||
|
@ -1405,7 +1408,7 @@ void Application::pause_all_torrents()
|
|||
tr_variant request;
|
||||
|
||||
tr_variantInitDict(&request, 1);
|
||||
tr_variantDictAddStr(&request, TR_KEY_method, "torrent-stop");
|
||||
tr_variantDictAddStr(&request, TR_KEY_method, "torrent-stop"sv);
|
||||
tr_rpc_request_exec_json(session, &request, nullptr, nullptr);
|
||||
tr_variantFree(&request);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
#include <array>
|
||||
#include <cstring> /* strlen() */
|
||||
#include <string_view>
|
||||
#include <typeinfo>
|
||||
|
||||
#include <event2/buffer.h>
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include <cstring> // strlen()
|
||||
#include <iterator>
|
||||
#include <string_view>
|
||||
#include <typeinfo>
|
||||
#include <vector>
|
||||
|
||||
#include "transmission.h"
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
#include <string_view>
|
||||
|
||||
#include "transmission.h"
|
||||
#include "completion.h"
|
||||
|
@ -24,6 +25,8 @@
|
|||
#include "utils.h" /* tr_buildPath */
|
||||
#include "variant.h"
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
|
@ -108,7 +111,7 @@ static void saveLabels(tr_variant* dict, tr_torrent const* tor)
|
|||
tr_variant* list = tr_variantDictAddList(dict, TR_KEY_labels, std::size(labels));
|
||||
for (auto const& label : labels)
|
||||
{
|
||||
tr_variantListAddStr(list, label.c_str());
|
||||
tr_variantListAddStr(list, label);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -467,11 +470,11 @@ static void bitfieldToBenc(Bitfield const* b, tr_variant* benc)
|
|||
{
|
||||
if (b->hasAll())
|
||||
{
|
||||
tr_variantInitStr(benc, "all", 3);
|
||||
tr_variantInitStr(benc, "all"sv);
|
||||
}
|
||||
else if (b->hasNone())
|
||||
{
|
||||
tr_variantInitStr(benc, "none", 4);
|
||||
tr_variantInitStr(benc, "none"sv);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -553,7 +556,7 @@ static void saveProgress(tr_variant* dict, tr_torrent* tor)
|
|||
/* add the progress */
|
||||
if (tor->completeness == TR_SEED)
|
||||
{
|
||||
tr_variantDictAddStr(prog, TR_KEY_have, "all");
|
||||
tr_variantDictAddStr(prog, TR_KEY_have, "all"sv);
|
||||
}
|
||||
|
||||
/* add the blocks bitfield */
|
||||
|
|
|
@ -48,6 +48,8 @@
|
|||
|
||||
#define RECENTLY_ACTIVE_SECONDS 60
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
#if 0
|
||||
#define dbgmsg(fmt, ...) fprintf(stderr, "%s:%d " fmt "\n", __FILE__, __LINE__, __VA_ARGS__)
|
||||
#else
|
||||
|
@ -380,7 +382,7 @@ static void addLabels(tr_torrent const* tor, tr_variant* list)
|
|||
tr_variantInitList(list, std::size(tor->labels));
|
||||
for (auto const& label : tor->labels)
|
||||
{
|
||||
tr_variantListAddStr(list, label.c_str());
|
||||
tr_variantListAddStr(list, label);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -532,7 +534,7 @@ static void initField(
|
|||
break;
|
||||
|
||||
case TR_KEY_comment:
|
||||
tr_variantInitStr(initme, inf->comment != nullptr ? inf->comment : "", TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, std::string_view{ inf->comment != nullptr ? inf->comment : "" });
|
||||
break;
|
||||
|
||||
case TR_KEY_corruptEver:
|
||||
|
@ -540,7 +542,7 @@ static void initField(
|
|||
break;
|
||||
|
||||
case TR_KEY_creator:
|
||||
tr_variantInitStr(initme, inf->creator != nullptr ? inf->creator : "", TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, std::string_view{ inf->creator != nullptr ? inf->creator : "" });
|
||||
break;
|
||||
|
||||
case TR_KEY_dateCreated:
|
||||
|
@ -556,7 +558,7 @@ static void initField(
|
|||
break;
|
||||
|
||||
case TR_KEY_downloadDir:
|
||||
tr_variantInitStr(initme, tr_torrentGetDownloadDir(tor), TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, tr_torrentGetDownloadDir(tor));
|
||||
break;
|
||||
|
||||
case TR_KEY_downloadedEver:
|
||||
|
@ -576,7 +578,7 @@ static void initField(
|
|||
break;
|
||||
|
||||
case TR_KEY_errorString:
|
||||
tr_variantInitStr(initme, st->errorString, TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, st->errorString);
|
||||
break;
|
||||
|
||||
case TR_KEY_eta:
|
||||
|
@ -598,7 +600,7 @@ static void initField(
|
|||
break;
|
||||
|
||||
case TR_KEY_hashString:
|
||||
tr_variantInitStr(initme, tor->info.hashString, TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, tor->info.hashString);
|
||||
break;
|
||||
|
||||
case TR_KEY_haveUnchecked:
|
||||
|
@ -651,7 +653,7 @@ static void initField(
|
|||
|
||||
case TR_KEY_magnetLink:
|
||||
str = tr_torrentGetMagnetLink(tor);
|
||||
tr_variantInitStr(initme, str, TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, str);
|
||||
tr_free(str);
|
||||
break;
|
||||
|
||||
|
@ -660,7 +662,7 @@ static void initField(
|
|||
break;
|
||||
|
||||
case TR_KEY_name:
|
||||
tr_variantInitStr(initme, tr_torrentName(tor), TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, tr_torrentName(tor));
|
||||
break;
|
||||
|
||||
case TR_KEY_percentDone:
|
||||
|
@ -706,12 +708,12 @@ static void initField(
|
|||
{
|
||||
auto const bytes = tr_torrentCreatePieceBitfield(tor);
|
||||
auto* enc = static_cast<char*>(tr_base64_encode(bytes.data(), std::size(bytes), nullptr));
|
||||
tr_variantInitStr(initme, enc != nullptr ? enc : "", TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, enc != nullptr ? std::string_view{ enc } : ""sv);
|
||||
tr_free(enc);
|
||||
}
|
||||
else
|
||||
{
|
||||
tr_variantInitStr(initme, "", 0);
|
||||
tr_variantInitStr(initme, ""sv);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -725,7 +727,7 @@ static void initField(
|
|||
break;
|
||||
|
||||
case TR_KEY_primary_mime_type:
|
||||
tr_variantInitStr(initme, tr_torrentPrimaryMimeType(tor), TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, tr_torrentPrimaryMimeType(tor));
|
||||
break;
|
||||
|
||||
case TR_KEY_priorities:
|
||||
|
@ -813,7 +815,7 @@ static void initField(
|
|||
}
|
||||
|
||||
case TR_KEY_torrentFile:
|
||||
tr_variantInitStr(initme, inf->torrent, TR_BAD_SIZE);
|
||||
tr_variantInitStr(initme, inf->torrent);
|
||||
break;
|
||||
|
||||
case TR_KEY_totalSize:
|
||||
|
@ -2462,20 +2464,20 @@ static void addSessionField(tr_session* s, tr_variant* d, tr_quark key)
|
|||
|
||||
case TR_KEY_encryption:
|
||||
{
|
||||
char const* str;
|
||||
auto str = std::string_view{};
|
||||
|
||||
switch (tr_sessionGetEncryption(s))
|
||||
{
|
||||
case TR_CLEAR_PREFERRED:
|
||||
str = "tolerated";
|
||||
str = "tolerated"sv;
|
||||
break;
|
||||
|
||||
case TR_ENCRYPTION_REQUIRED:
|
||||
str = "required";
|
||||
str = "required"sv;
|
||||
break;
|
||||
|
||||
default:
|
||||
str = "preferred";
|
||||
str = "preferred"sv;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2748,7 +2750,7 @@ void tr_rpc_parse_list_str(tr_variant* setme, std::string_view str)
|
|||
|
||||
if (valueCount == 0)
|
||||
{
|
||||
tr_variantInitStr(setme, std::data(str), std::size(str));
|
||||
tr_variantInitStr(setme, str);
|
||||
}
|
||||
else if (valueCount == 1)
|
||||
{
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
#include <set>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <typeinfo>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
|
@ -3241,24 +3240,23 @@ void tr_torrentSetLocation(
|
|||
tr_runInEventThread(tor->session, setLocation, data);
|
||||
}
|
||||
|
||||
char const* tr_torrentPrimaryMimeType(tr_torrent const* tor)
|
||||
std::string_view tr_torrentPrimaryMimeType(tr_torrent const* tor)
|
||||
{
|
||||
tr_info const* inf = &tor->info;
|
||||
|
||||
// count up how many bytes there are for each mime-type in the torrent
|
||||
// NB: get_mime_type_for_filename() always returns the same ptr for a
|
||||
// mime_type, so its raw pointer can be used as a key.
|
||||
// TODO: tr_get_mime_type_for_filename should return a std::string_view
|
||||
auto size_per_mime_type = std::unordered_map<char const*, size_t>{};
|
||||
auto size_per_mime_type = std::unordered_map<std::string_view, size_t>{};
|
||||
for (tr_file const *it = inf->files, *end = it + inf->fileCount; it != end; ++it)
|
||||
{
|
||||
char const* mime_type = tr_get_mime_type_for_filename(it->name);
|
||||
auto const mime_type = tr_get_mime_type_for_filename(it->name);
|
||||
size_per_mime_type[mime_type] += it->length;
|
||||
}
|
||||
|
||||
// now that we have the totals,
|
||||
// sort by number so that we can get the biggest
|
||||
auto mime_type_per_size = std::map<size_t, char const*>{};
|
||||
auto mime_type_per_size = std::map<size_t, std::string_view>{};
|
||||
for (auto it : size_per_mime_type)
|
||||
{
|
||||
mime_type_per_size.emplace(it.second, it.first);
|
||||
|
@ -3267,9 +3265,9 @@ char const* tr_torrentPrimaryMimeType(tr_torrent const* tor)
|
|||
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
|
||||
// application/octet-stream is the default value for all other cases.
|
||||
// An unknown file type should use this type.
|
||||
char const* const fallback = "application/octet-stream";
|
||||
auto constexpr Fallback = "application/octet-stream"sv;
|
||||
|
||||
return std::empty(mime_type_per_size) ? fallback : mime_type_per_size.rbegin()->second;
|
||||
return std::empty(mime_type_per_size) ? Fallback : mime_type_per_size.rbegin()->second;
|
||||
}
|
||||
|
||||
/***
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#endif
|
||||
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <unordered_set>
|
||||
#include <vector>
|
||||
|
||||
|
@ -112,7 +113,7 @@ void tr_torrentSetDateDone(tr_torrent* torrent, time_t doneDate);
|
|||
|
||||
/** Return the mime-type (e.g. "audio/x-flac") that matches more of the
|
||||
torrent's content than any other mime-type. */
|
||||
char const* tr_torrentPrimaryMimeType(tr_torrent const* tor);
|
||||
std::string_view tr_torrentPrimaryMimeType(tr_torrent const* tor);
|
||||
|
||||
enum tr_verify_state
|
||||
{
|
||||
|
|
|
@ -69,6 +69,8 @@
|
|||
#include "variant.h"
|
||||
#include "version.h"
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
time_t __tr_current_time = 0;
|
||||
|
||||
/***
|
||||
|
@ -1864,7 +1866,7 @@ void tr_net_init(void)
|
|||
|
||||
/// mime-type
|
||||
|
||||
char const* tr_get_mime_type_for_filename(std::string_view filename)
|
||||
std::string_view tr_get_mime_type_for_filename(std::string_view filename)
|
||||
{
|
||||
auto constexpr compare = [](mime_type_suffix const& entry, auto const& suffix)
|
||||
{
|
||||
|
@ -1887,9 +1889,13 @@ char const* tr_get_mime_type_for_filename(std::string_view filename)
|
|||
auto const it = std::lower_bound(std::begin(mime_type_suffixes), std::end(mime_type_suffixes), suffix_lc, compare);
|
||||
if (it != std::end(mime_type_suffixes) && suffix_lc == it->suffix)
|
||||
{
|
||||
return std::data(it->mime_type);
|
||||
return it->mime_type;
|
||||
}
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
|
||||
// application/octet-stream is the default value.
|
||||
// An unknown file type should use this type.
|
||||
auto constexpr Fallback = "application/octet-stream"sv;
|
||||
return Fallback;
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ char const* tr_strip_positional_args(char const* fmt);
|
|||
|
||||
#define TR_N_ELEMENTS(ary) (sizeof(ary) / sizeof(*(ary)))
|
||||
|
||||
char const* tr_get_mime_type_for_filename(std::string_view filename);
|
||||
std::string_view tr_get_mime_type_for_filename(std::string_view filename);
|
||||
|
||||
/**
|
||||
* @brief Rich Salz's classic implementation of shell-style pattern matching for ?, \, [], and * characters.
|
||||
|
|
|
@ -257,10 +257,10 @@ int tr_variantParseBenc(void const* buf_in, void const* bufend_in, tr_variant* t
|
|||
}
|
||||
|
||||
buf = end;
|
||||
auto const sv = std::string_view{ reinterpret_cast<char const*>(str), str_len };
|
||||
|
||||
if (!key && !std::empty(stack) && tr_variantIsDict(stack.back()))
|
||||
{
|
||||
auto const sv = std::string_view{ reinterpret_cast<char const*>(str), str_len };
|
||||
key = tr_quark_new(sv);
|
||||
}
|
||||
else
|
||||
|
@ -268,7 +268,7 @@ int tr_variantParseBenc(void const* buf_in, void const* bufend_in, tr_variant* t
|
|||
tr_variant* const v = get_node(stack, key, top, &err);
|
||||
if (v != nullptr)
|
||||
{
|
||||
tr_variantInitStr(v, str, str_len);
|
||||
tr_variantInitStr(v, sv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -308,7 +308,7 @@ static void action_callback_POP(
|
|||
{
|
||||
auto len = size_t{};
|
||||
char const* str = extract_string(jsn, state, &len, data->strbuf);
|
||||
tr_variantInitStr(get_node(jsn), str, len);
|
||||
tr_variantInitStr(get_node(jsn), { str, len });
|
||||
data->has_content = true;
|
||||
}
|
||||
else if (state->type == JSONSL_T_HKEY)
|
||||
|
|
|
@ -173,25 +173,19 @@ static void tr_variant_string_set_quark(struct tr_variant_string* str, tr_quark
|
|||
str->str.str = tr_quark_get_string(quark, &str->len);
|
||||
}
|
||||
|
||||
static void tr_variant_string_set_string(struct tr_variant_string* str, char const* bytes, size_t len)
|
||||
static void tr_variant_string_set_string(struct tr_variant_string* str, std::string_view in)
|
||||
{
|
||||
tr_variant_string_clear(str);
|
||||
|
||||
if (bytes == nullptr)
|
||||
{
|
||||
len = 0;
|
||||
}
|
||||
else if (len == TR_BAD_SIZE)
|
||||
{
|
||||
len = strlen(bytes);
|
||||
}
|
||||
auto const* const bytes = std::data(in);
|
||||
auto const len = std::size(in);
|
||||
|
||||
if (len < sizeof(str->str.buf))
|
||||
{
|
||||
str->type = TR_STRING_TYPE_BUF;
|
||||
if (len > 0)
|
||||
{
|
||||
memcpy(str->str.buf, bytes, len);
|
||||
std::copy_n(bytes, len, str->str.buf);
|
||||
}
|
||||
|
||||
str->str.buf[len] = '\0';
|
||||
|
@ -200,7 +194,7 @@ static void tr_variant_string_set_string(struct tr_variant_string* str, char con
|
|||
else
|
||||
{
|
||||
auto* tmp = tr_new(char, len + 1);
|
||||
memcpy(tmp, bytes, len);
|
||||
std::copy_n(bytes, len, tmp);
|
||||
tmp[len] = '\0';
|
||||
str->type = TR_STRING_TYPE_HEAP;
|
||||
str->str.str = tmp;
|
||||
|
@ -445,7 +439,7 @@ bool tr_variantDictFindRaw(tr_variant* dict, tr_quark const key, uint8_t const**
|
|||
void tr_variantInitRaw(tr_variant* v, void const* src, size_t byteCount)
|
||||
{
|
||||
tr_variantInit(v, TR_VARIANT_TYPE_STR);
|
||||
tr_variant_string_set_string(&v->val.s, static_cast<char const*>(src), byteCount);
|
||||
tr_variant_string_set_string(&v->val.s, { static_cast<char const*>(src), byteCount });
|
||||
}
|
||||
|
||||
void tr_variantInitQuark(tr_variant* v, tr_quark const q)
|
||||
|
@ -454,10 +448,10 @@ void tr_variantInitQuark(tr_variant* v, tr_quark const q)
|
|||
tr_variant_string_set_quark(&v->val.s, q);
|
||||
}
|
||||
|
||||
void tr_variantInitStr(tr_variant* v, void const* str, size_t len)
|
||||
void tr_variantInitStr(tr_variant* v, std::string_view str)
|
||||
{
|
||||
tr_variantInit(v, TR_VARIANT_TYPE_STR);
|
||||
tr_variant_string_set_string(&v->val.s, static_cast<char const*>(str), len);
|
||||
tr_variant_string_set_string(&v->val.s, str);
|
||||
}
|
||||
|
||||
void tr_variantInitBool(tr_variant* v, bool value)
|
||||
|
@ -559,10 +553,10 @@ tr_variant* tr_variantListAddBool(tr_variant* list, bool val)
|
|||
return child;
|
||||
}
|
||||
|
||||
tr_variant* tr_variantListAddStr(tr_variant* list, char const* val)
|
||||
tr_variant* tr_variantListAddStr(tr_variant* list, std::string_view str)
|
||||
{
|
||||
tr_variant* child = tr_variantListAdd(list);
|
||||
tr_variantInitStr(child, val, TR_BAD_SIZE);
|
||||
tr_variantInitStr(child, str);
|
||||
return child;
|
||||
}
|
||||
|
||||
|
@ -661,10 +655,10 @@ tr_variant* tr_variantDictAddQuark(tr_variant* dict, tr_quark const key, tr_quar
|
|||
return child;
|
||||
}
|
||||
|
||||
tr_variant* tr_variantDictAddStr(tr_variant* dict, tr_quark const key, char const* val)
|
||||
tr_variant* tr_variantDictAddStr(tr_variant* dict, tr_quark const key, std::string_view str)
|
||||
{
|
||||
tr_variant* child = dictFindOrAdd(dict, key, TR_VARIANT_TYPE_STR);
|
||||
tr_variantInitStr(child, val, TR_BAD_SIZE);
|
||||
tr_variantInitStr(child, str);
|
||||
return child;
|
||||
}
|
||||
|
||||
|
|
|
@ -169,7 +169,7 @@ constexpr bool tr_variantIsString(tr_variant const* b)
|
|||
|
||||
bool tr_variantGetStr(tr_variant const* variant, char const** setme_str, size_t* setme_len);
|
||||
|
||||
void tr_variantInitStr(tr_variant* initme, void const* str, size_t str_len);
|
||||
void tr_variantInitStr(tr_variant* initme, std::string_view);
|
||||
void tr_variantInitQuark(tr_variant* initme, tr_quark const quark);
|
||||
void tr_variantInitRaw(tr_variant* initme, void const* raw, size_t raw_len);
|
||||
|
||||
|
@ -227,7 +227,7 @@ tr_variant* tr_variantListAdd(tr_variant* list);
|
|||
tr_variant* tr_variantListAddBool(tr_variant* list, bool addme);
|
||||
tr_variant* tr_variantListAddInt(tr_variant* list, int64_t addme);
|
||||
tr_variant* tr_variantListAddReal(tr_variant* list, double addme);
|
||||
tr_variant* tr_variantListAddStr(tr_variant* list, char const* addme);
|
||||
tr_variant* tr_variantListAddStr(tr_variant* list, std::string_view);
|
||||
tr_variant* tr_variantListAddQuark(tr_variant* list, tr_quark const addme);
|
||||
tr_variant* tr_variantListAddRaw(tr_variant* list, void const* addme_value, size_t addme_len);
|
||||
tr_variant* tr_variantListAddList(tr_variant* list, size_t reserve_count);
|
||||
|
@ -254,7 +254,7 @@ tr_variant* tr_variantDictAdd(tr_variant* dict, tr_quark const key);
|
|||
tr_variant* tr_variantDictAddReal(tr_variant* dict, tr_quark const key, double value);
|
||||
tr_variant* tr_variantDictAddInt(tr_variant* dict, tr_quark const key, int64_t value);
|
||||
tr_variant* tr_variantDictAddBool(tr_variant* dict, tr_quark const key, bool value);
|
||||
tr_variant* tr_variantDictAddStr(tr_variant* dict, tr_quark const key, char const* value);
|
||||
tr_variant* tr_variantDictAddStr(tr_variant* dict, tr_quark const key, std::string_view);
|
||||
tr_variant* tr_variantDictAddQuark(tr_variant* dict, tr_quark const key, tr_quark const val);
|
||||
tr_variant* tr_variantDictAddList(tr_variant* dict, tr_quark const key, size_t reserve_count);
|
||||
tr_variant* tr_variantDictAddDict(tr_variant* dict, tr_quark const key, size_t reserve_count);
|
||||
|
|
|
@ -223,7 +223,7 @@ void variantInit(tr_variant* init_me, QString const& value)
|
|||
|
||||
void variantInit(tr_variant* init_me, std::string_view value)
|
||||
{
|
||||
tr_variantInitStr(init_me, std::data(value), std::size(value));
|
||||
tr_variantInitStr(init_me, value);
|
||||
}
|
||||
|
||||
} // namespace trqt::variant_helpers
|
||||
|
|
|
@ -8,6 +8,11 @@
|
|||
|
||||
#define LIBTRANSMISSION_VARIANT_MODULE
|
||||
|
||||
#include <clocale> // setlocale()
|
||||
#include <cstring> // strlen()
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
|
||||
#include "transmission.h"
|
||||
#include "utils.h" // tr_free()
|
||||
#include "variant.h"
|
||||
|
@ -15,12 +20,6 @@
|
|||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
#include <clocale> // setlocale()
|
||||
#include <cstring> // strlen()
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <typeinfo> // sv for string_views
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
class JSONTest : public ::testing::TestWithParam<char const*>
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
#include <array>
|
||||
#include <set>
|
||||
#include <string_view>
|
||||
#include <typeinfo>
|
||||
#include <vector>
|
||||
|
||||
using namespace std::literals;
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
*/
|
||||
|
||||
#include <string_view>
|
||||
#include <typeinfo>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <windows.h>
|
||||
|
@ -401,9 +400,9 @@ TEST_F(UtilsTest, env)
|
|||
|
||||
TEST_F(UtilsTest, mimeTypes)
|
||||
{
|
||||
EXPECT_STREQ("audio/x-flac", tr_get_mime_type_for_filename("music.flac"));
|
||||
EXPECT_STREQ("audio/x-flac", tr_get_mime_type_for_filename("music.FLAC"));
|
||||
EXPECT_STREQ("video/x-msvideo", tr_get_mime_type_for_filename(".avi"));
|
||||
EXPECT_STREQ("video/x-msvideo", tr_get_mime_type_for_filename("/path/to/FILENAME.AVI"));
|
||||
EXPECT_EQ(nullptr, tr_get_mime_type_for_filename("music.ajoijfeisfe"));
|
||||
EXPECT_EQ("audio/x-flac"sv, tr_get_mime_type_for_filename("music.flac"sv));
|
||||
EXPECT_EQ("audio/x-flac"sv, tr_get_mime_type_for_filename("music.FLAC"sv));
|
||||
EXPECT_EQ("video/x-msvideo"sv, tr_get_mime_type_for_filename(".avi"sv));
|
||||
EXPECT_EQ("video/x-msvideo"sv, tr_get_mime_type_for_filename("/path/to/FILENAME.AVI"sv));
|
||||
EXPECT_EQ("application/octet-stream"sv, tr_get_mime_type_for_filename("music.ajoijfeisfe"sv));
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#include <cctype> // isspace()
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <typeinfo>
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
|
|
|
@ -210,7 +210,7 @@ static bool replaceURL(tr_variant* metainfo, char const* in, char const* out)
|
|||
char* newstr = replaceSubstr(str, in, out);
|
||||
printf("\tReplaced in \"announce-list\" tier %d: \"%s\" --> \"%s\"\n", tierCount + 1, str, newstr);
|
||||
tr_variantFree(node);
|
||||
tr_variantInitStr(node, newstr, TR_BAD_SIZE);
|
||||
tr_variantInitStr(node, newstr);
|
||||
tr_free(newstr);
|
||||
changed = true;
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h> /* strcmp */
|
||||
#include <string_view>
|
||||
|
||||
#include <event2/buffer.h>
|
||||
#include <event2/util.h>
|
||||
|
@ -55,6 +56,8 @@
|
|||
#define SPEED_G_STR "GB/s"
|
||||
#define SPEED_T_STR "TB/s"
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
/***
|
||||
****
|
||||
**** Display Utilities
|
||||
|
@ -587,7 +590,7 @@ static void addIdArg(tr_variant* args, char const* id_str, char const* fallback)
|
|||
|
||||
if (tr_strcmp0(id_str, "active") == 0)
|
||||
{
|
||||
tr_variantDictAddStr(args, TR_KEY_ids, "recently-active");
|
||||
tr_variantDictAddStr(args, TR_KEY_ids, "recently-active"sv);
|
||||
}
|
||||
else if (strcmp(id_str, "all") != 0)
|
||||
{
|
||||
|
@ -2287,7 +2290,7 @@ static tr_variant* ensure_sset(tr_variant** sset)
|
|||
{
|
||||
*sset = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(*sset, 3);
|
||||
tr_variantDictAddStr(*sset, TR_KEY_method, "session-set");
|
||||
tr_variantDictAddStr(*sset, TR_KEY_method, "session-set"sv);
|
||||
args = tr_variantDictAddDict(*sset, ARGUMENTS, 0);
|
||||
}
|
||||
|
||||
|
@ -2306,7 +2309,7 @@ static tr_variant* ensure_tset(tr_variant** tset)
|
|||
{
|
||||
*tset = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(*tset, 3);
|
||||
tr_variantDictAddStr(*tset, TR_KEY_method, "torrent-set");
|
||||
tr_variantDictAddStr(*tset, TR_KEY_method, "torrent-set"sv);
|
||||
args = tr_variantDictAddDict(*tset, ARGUMENTS, 1);
|
||||
}
|
||||
|
||||
|
@ -2351,7 +2354,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
|
||||
tadd = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(tadd, 3);
|
||||
tr_variantDictAddStr(tadd, TR_KEY_method, "torrent-add");
|
||||
tr_variantDictAddStr(tadd, TR_KEY_method, "torrent-add"sv);
|
||||
tr_variantDictAddInt(tadd, TR_KEY_tag, TAG_TORRENT_ADD);
|
||||
tr_variantDictAddDict(tadd, ARGUMENTS, 0);
|
||||
break;
|
||||
|
@ -2440,7 +2443,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
tr_variant* args;
|
||||
tr_variant* fields;
|
||||
tr_variantInitDict(top, 3);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-get");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-get"sv);
|
||||
args = tr_variantDictAddDict(top, ARGUMENTS, 0);
|
||||
fields = tr_variantDictAddList(args, TR_KEY_fields, 0);
|
||||
|
||||
|
@ -2487,20 +2490,20 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
|
||||
case 941:
|
||||
tr_variantDictAddInt(top, TR_KEY_tag, TAG_PEERS);
|
||||
tr_variantListAddStr(fields, "peers");
|
||||
tr_variantListAddStr(fields, "peers"sv);
|
||||
addIdArg(args, id, nullptr);
|
||||
break;
|
||||
|
||||
case 942:
|
||||
tr_variantDictAddInt(top, TR_KEY_tag, TAG_PIECES);
|
||||
tr_variantListAddStr(fields, "pieces");
|
||||
tr_variantListAddStr(fields, "pieceCount");
|
||||
tr_variantListAddStr(fields, "pieces"sv);
|
||||
tr_variantListAddStr(fields, "pieceCount"sv);
|
||||
addIdArg(args, id, nullptr);
|
||||
break;
|
||||
|
||||
case 943:
|
||||
tr_variantDictAddInt(top, TR_KEY_tag, TAG_TRACKERS);
|
||||
tr_variantListAddStr(fields, "trackerStats");
|
||||
tr_variantListAddStr(fields, "trackerStats"sv);
|
||||
addIdArg(args, id, nullptr);
|
||||
break;
|
||||
|
||||
|
@ -2575,15 +2578,15 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
break;
|
||||
|
||||
case 910:
|
||||
tr_variantDictAddStr(args, TR_KEY_encryption, "required");
|
||||
tr_variantDictAddStr(args, TR_KEY_encryption, "required"sv);
|
||||
break;
|
||||
|
||||
case 911:
|
||||
tr_variantDictAddStr(args, TR_KEY_encryption, "preferred");
|
||||
tr_variantDictAddStr(args, TR_KEY_encryption, "preferred"sv);
|
||||
break;
|
||||
|
||||
case 912:
|
||||
tr_variantDictAddStr(args, TR_KEY_encryption, "tolerated");
|
||||
tr_variantDictAddStr(args, TR_KEY_encryption, "tolerated"sv);
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
|
@ -2857,7 +2860,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
tr_variant* args;
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-set-location");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-set-location"sv);
|
||||
args = tr_variantDictAddDict(top, ARGUMENTS, 3);
|
||||
tr_variantDictAddStr(args, TR_KEY_location, optarg);
|
||||
tr_variantDictAddBool(args, TR_KEY_move, false);
|
||||
|
@ -2874,7 +2877,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "session-get");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "session-get"sv);
|
||||
tr_variantDictAddInt(top, TR_KEY_tag, TAG_SESSION);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
|
@ -2890,7 +2893,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-start");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-start"sv);
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
}
|
||||
|
@ -2908,7 +2911,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-stop");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-stop"sv);
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
}
|
||||
|
@ -2927,7 +2930,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 1);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "session-close");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "session-close"sv);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
}
|
||||
|
@ -2936,7 +2939,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 1);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "blocklist-update");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "blocklist-update"sv);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
}
|
||||
|
@ -2945,7 +2948,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "session-stats");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "session-stats"sv);
|
||||
tr_variantDictAddInt(top, TR_KEY_tag, TAG_STATS);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
|
@ -2955,7 +2958,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
{
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "port-test");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "port-test"sv);
|
||||
tr_variantDictAddInt(top, TR_KEY_tag, TAG_PORTTEST);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
|
@ -2973,7 +2976,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
|
||||
top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-reannounce");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-reannounce"sv);
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
|
@ -2991,7 +2994,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
|
||||
top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-verify");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-verify"sv);
|
||||
addIdArg(tr_variantDictAddDict(top, ARGUMENTS, 1), id, nullptr);
|
||||
status |= flush(rpcurl, &top);
|
||||
break;
|
||||
|
@ -3003,7 +3006,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
tr_variant* args;
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-remove");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-remove"sv);
|
||||
args = tr_variantDictAddDict(top, ARGUMENTS, 2);
|
||||
tr_variantDictAddBool(args, TR_KEY_delete_local_data, c == 840);
|
||||
addIdArg(args, id, nullptr);
|
||||
|
@ -3016,7 +3019,7 @@ static int processArgs(char const* rpcurl, int argc, char const* const* argv)
|
|||
tr_variant* args;
|
||||
tr_variant* top = tr_new0(tr_variant, 1);
|
||||
tr_variantInitDict(top, 2);
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-set-location");
|
||||
tr_variantDictAddStr(top, TR_KEY_method, "torrent-set-location"sv);
|
||||
args = tr_variantDictAddDict(top, ARGUMENTS, 3);
|
||||
tr_variantDictAddStr(args, TR_KEY_location, optarg);
|
||||
tr_variantDictAddBool(args, TR_KEY_move, true);
|
||||
|
|
Loading…
Reference in New Issue