Charles Kerr
fece4137c7
refactor: add tr_variant::unmanaged_string(tr_quark) ( #7906 )
...
* feat: add tr_variant::unmanaged_string(tr_quark)
* refactor: use tr_variant::unmanaged_string(tr_quark)
2025-12-09 14:58:15 -06:00
Charles Kerr
0979bbcc3f
refactor: intern RPC method names ( #7892 )
...
* refactor: add quarks for the RPC method names
* update tr_quark_convert() to handle RPC method names
* refactor: use interned keys for RPC method names
* test: add torrentGetLegacy test
* refactor: use interned keys for RPC method names in tr-qt
* refactor: use interned keys for RPC method names in tr-remote
* refactor: use interned keys for RPC method names in tests
* refactor: use interned keys for RPC method names in tr-gtk
* chore: fix readability-identifier-naming regression
2025-12-09 11:48:09 -06:00
Yat Ho
05aef3e787
refactor: unify quarks and strings to snake_case ( #7108 )
...
* refactor: change `leftUntilDone` to `left_until_done`
* refactor: change `magnetLink` to `magnet_link`
* refactor: change `manualAnnounceTime` to `manual_announce_time`
* refactor: change `maxConnectedPeers` to `max_connected_peers`
* refactor: change `metadataPercentComplete` to `metadata_percent_complete`
* refactor: change `peersConnected` to `peers_connected`
* refactor: change `peersFrom` to `peers_from`
* refactor: change `peersGettingFromUs` to `peers_getting_from_us`
* refactor: change `peersSendingToUs` to `peers_sending_to_us`
* refactor: change `percentComplete` to `percent_complete`
* refactor: change `percentDone` to `percent_done`
* refactor: change `pieceCount` to `piece_count`
* refactor: use quark when possible
* refactor: change `pieceSize` to `piece_size`
* refactor: change `primary-mime-type` to `primary_mime_type`
* refactor: change `rateDownload` to `rate_download`
* refactor: change `rateUpload` to `rate_upload`
* refactor: change `recheckProgress` to `recheck_progress`
* refactor: change `secondsDownloading` to `seconds_downloading`
* refactor: change `secondsSeeding` to `seconds_seeding`
* refactor: change `sizeWhenDone` to `size_when_done`
* refactor: change `startDate` to `start_date`
* refactor: change `trackerStats` to `tracker_stats`
* refactor: change `totalSize` to `total_size`
* refactor: change `torrentFile` to `torrent_file`
* refactor: change `uploadedEver` to `uploaded_ever`
* refactor: change `uploadRatio` to `upload_ratio`
* refactor: change `webseedsSendingToUs` to `webseeds_sending_to_us`
* refactor: change `bytesCompleted` to `bytes_completed`
* refactor: change `clientName` to `client_name`
* refactor: change `clientIsChoked` to `client_is_choked`
* refactor: change `clientIsInterested` to `client_is_interested`
* refactor: change `flagStr` to `flag_str`
* refactor: change `isDownloadingFrom` to `is_downloading_from`
* refactor: change `isEncrypted` to `is_encrypted`
* refactor: change `isIncoming` to `is_incoming`
* refactor: change `isUploadingTo` to `is_uploading_to`
* refactor: change `isUTP` to `is_utp`
* refactor: change `peerIsChoked` to `peer_is_choked`
* refactor: change `peerIsInterested` to `peer_is_interested`
* refactor: change `rateToClient` to `rate_to_client`
* refactor: change `rateToPeer` to `rate_to_peer`
* refactor: change `fromCache` to `from_cache`
* refactor: change `fromDht` to `from_dht`
* refactor: change `fromIncoming` to `from_incoming`
* refactor: change `fromLpd` to `from_lpd`
* refactor: change `fromLtep` to `from_ltep`
* refactor: change `fromPex` to `from_pex`
* refactor: change `fromTracker` to `from_tracker`
* refactor: change `announceState` to `announce_state`
* refactor: change `downloadCount` to `download_count`
* refactor: change `hasAnnounced` to `has_announced`
* refactor: change `hasScraped` to `has_scraped`
* refactor: change `isBackup` to `is_backup`
* refactor: change `lastAnnouncePeerCount` to `last_announce_peer_count`
* refactor: change `lastAnnounceResult` to `last_announce_result`
* refactor: change `lastAnnounceStartTime` to `last_announce_start_time`
* refactor: change `lastAnnounceSucceeded` to `last_announce_succeeded`
* refactor: change `lastAnnounceTime` to `last_announce_time`
* refactor: change `lastAnnounceTimedOut` to `last_announce_timed_out`
* refactor: change `lastScrapeResult` to `last_scrape_result`
* refactor: change `lastScrapeStartTime` to `last_scrape_start_time`
* refactor: change `lastScrapeSucceeded` to `last_scrape_succeeded`
* refactor: change `lastScrapeTime` to `last_scrape_time`
* refactor: change `lastScrapeTimedOut` to `last_scrape_timed_out`
* refactor: change `leecherCount` to `leecher_count`
* refactor: change `nextAnnounceTime` to `next_announce_time`
* refactor: change `nextScrapeTime` to `next_scrape_time`
* refactor: change `scrapeState` to `scrape_state`
* refactor: change `seederCount` to `seeder_count`
* refactor: change `torrent-added` to `torrent_added`
* refactor: change `torrent-duplicate` to `torrent_duplicate`
* refactor: change `torrent-remove` to `torrent_remove`
* refactor: change `delete-local-data` to `delete_local_data`
* refactor: change `torrent-rename-path` to `torrent_rename_path`
* refactor: change `alt-speed-down` to `alt_speed_down`
* refactor: convert `pref_toggle_entries` to quark array
* refactor: change `alt-speed-enabled` to `alt_speed_enabled`
* refactor: change `compact-view` to `compact_view`
* refactor: change `sort-reversed` to `sort_reversed`
* refactor: change `show-filterbar` to `show_filterbar`
* refactor: change `show-statusbar` to `show_statusbar`
* refactor: change `show-toolbar` to `show_toolbar`
* refactor: change `alt-speed-time-begin` to `alt_speed_time_begin`
* refactor: change `alt-speed-time-day` to `alt_speed_time_day`
* refactor: change `alt-speed-time-end` to `alt_speed_time_end`
* refactor: change `alt-speed-up` to `alt_speed_up`
* refactor: change `alt-speed-time-enabled` to `alt_speed_time_enabled`
* refactor: change `blocklist-enabled` to `blocklist_enabled`
* refactor: change `blocklist-size` to `blocklist_size`
* refactor: change `blocklist-url` to `blocklist_url`
* refactor: change `cache-size-mb` to `cache_size_mb`
* refactor: change `config-dir` to `config_dir`
* refactor: change `default-trackers` to `default_trackers`
* refactor: change `dht-enabled` to `dht_enabled`
* refactor: change `download-dir-free-space` to `download_dir_free_space`
* refactor: change `download-queue-enabled` to `download_queue_enabled`
* refactor: change `download-queue-size` to `download_queue_size`
* refactor: change `idle-seeding-limit-enabled` to `idle_seeding_limit_enabled`
* refactor: change `idle-seeding-limit` to `idle_seeding_limit`
* refactor: change `incomplete-dir-enabled` to `incomplete_dir_enabled`
* refactor: change `incomplete-dir` to `incomplete_dir`
* refactor: change `lpd-enabled` to `lpd_enabled`
* refactor: change `peer-limit-global` to `peer_limit_global`
* refactor: change `peer-limit-per-torrent` to `peer_limit_per_torrent`
* refactor: change `peer-port-random-on-start` to `peer_port_random_on_start`
* refactor: change `peer-port` to `peer_port`
* refactor: change `pex-enabled` to `pex_enabled`
* refactor: change `port-forwarding-enabled` to `port_forwarding_enabled`
* refactor: change `queue-stalled-enabled` to `queue_stalled_enabled`
* refactor: change `queue-stalled-minutes` to `queue_stalled_minutes`
* refactor: change `rename-partial-files` to `rename_partial_files`
* refactor: change `rpc-version-minimum` to `rpc_version_minimum`
* refactor: change `rpc-version-semver` to `rpc_version_semver`
* refactor: change `rpc-version` to `rpc_version`
* refactor: change `script-torrent-added-enabled` to `script_torrent_added_enabled`
* refactor: change `script-torrent-added-filename` to `script_torrent_added_filename`
* refactor: change `script-torrent-done-enabled` to `script_torrent_done_enabled`
* refactor: change `script-torrent-done-filename` to `script_torrent_done_filename`
* refactor: change `script-torrent-done-seeding-enabled` to `script_torrent_done_seeding_enabled`
* refactor: change `script-torrent-done-seeding-filename` to `script_torrent_done_seeding_filename`
* refactor: change `seed-queue-enabled` to `seed_queue_enabled`
* refactor: change `seed-queue-size` to `seed_queue_size`
* refactor: change `seedRatioLimited` to `seed_ratio_limited`
* refactor: change `session-id` to `session_id`
* refactor: change `speed-limit-down-enabled` to `speed_limit_down_enabled`
* refactor: change `speed-limit-down` to `speed_limit_down`
* refactor: change `speed-limit-up-enabled` to `speed_limit_up_enabled`
* refactor: change `speed-limit-up` to `speed_limit_up`
* refactor: change `start-added-torrents` to `start_added_torrents`
* refactor: change `trash-original-torrent-files` to `trash_original_torrent_files`
* refactor: change `utp-enabled` to `utp_enabled`
* refactor: change `tcp-enabled` to `tcp_enabled`
* docs: add missing docs for RPC `tcp_enabled`
* refactor: change `speed-units` to `speed_units`
* refactor: change `speed-bytes` to `speed_bytes`
* refactor: change `size-units` to `size_units`
* refactor: change `size-bytes` to `size_bytes`
* refactor: change `memory-units` to `memory_units`
* refactor: change `memory-bytes` to `memory_bytes`
* refactor: change `session-set` to `session_set`
* refactor: change `session-get` to `session_get`
* refactor: change `session-stats` to `session_stats`
* refactor: change `activeTorrentCount` to `active_torrent_count`
* refactor: change `downloadSpeed` to `download_speed`
* refactor: change `pausedTorrentCount` to `paused_torrent_count`
* refactor: change `torrentCount` to `torrent_count`
* refactor: change `uploadSpeed` to `upload_speed`
* refactor: change `cumulative-stats` to `cumulative_stats`
* refactor: change `current-stats` to `current_stats`
* refactor: change `uploadedBytes` and `uploaded-bytes` to `uploaded_bytes`
* refactor: change `downloadedBytes` and `downloaded-bytes` to `downloaded_bytes`
* refactor: change `filesAdded` and `files-added` to `files_added`
* refactor: change `sessionCount` and `session-count` to `session_count`
* refactor: change `secondsActive` and `seconds-active` to `seconds_active`
* refactor: change `blocklist-update` to `blocklist_update`
* refactor: change `port-test` to `port_test`
* refactor: change `session-close` to `session_close`
* refactor: change `queue-move-top` to `queue_move_top`
* refactor: change `queue-move-up` to `queue_move_up`
* refactor: change `queue-move-down` to `queue_move_down`
* refactor: change `queue-move-bottom` to `queue_move_bottom`
* refactor: change `free-space` to `free_space`
* refactor: change `group-set` to `group_set`
* refactor: change `group-get` to `group_get`
* refactor: change `announce-ip` to `announce_ip`
* refactor: change `announce-ip-enabled` to `announce_ip_enabled`
* refactor: change `upload-slots-per-torrent` to `upload_slots_per_torrent`
* refactor: change `trash-can-enabled` to `trash_can_enabled`
* refactor: change `watch-dir-enabled` to `watch_dir_enabled`
* refactor: change `watch-dir-force-generic` to `watch_dir_force_generic`
* refactor: change `watch-dir` to `watch_dir`
* refactor: change `message-level` to `message_level`
* refactor: change `scrape-paused-torrents-enabled` to `scrape_paused_torrents_enabled`
* refactor: change `torrent-added-verify-mode` to `torrent_added_verify_mode`
* refactor: change `sleep-per-seconds-during-verify` to `sleep_per_seconds_during_verify`
* refactor: change `bind-address-ipv4` to `bind_address_ipv4`
* refactor: change `bind-address-ipv6` to `bind_address_ipv6`
* refactor: change `peer-congestion-algorithm` to `peer_congestion_algorithm`
* refactor: change `peer-socket-tos` to `peer_socket_tos`
* refactor: change `peer-port-random-high` to `peer_port_random_high`
* refactor: change `peer-port-random-low` to `peer_port_random_low`
* refactor: change `anti-brute-force-enabled` to `anti_brute_force_enabled`
* refactor: change `rpc-authentication-required` to `rpc_authentication_required`
* refactor: change `rpc-bind-address` to `rpc_bind_address`
* refactor: change `rpc-enabled` to `rpc_enabled`
* refactor: change `rpc-host-whitelist` to `rpc_host_whitelist`
* refactor: change `rpc-host-whitelist-enabled` to `rpc_host_whitelist_enabled`
* refactor: change `rpc-password` to `rpc_password`
* refactor: change `rpc-port` to `rpc_port`
* refactor: change `rpc-socket-mode` to `rpc_socket_mode`
* refactor: change `rpc-url` to `rpc_url`
* refactor: change `rpc-username` to `rpc_username`
* refactor: change `rpc-whitelist` to `rpc_whitelist`
* refactor: change `rpc-whitelist-enabled` to `rpc_whitelist_enabled`
* refactor: change `ratio-limit-enabled` to `ratio_limit_enabled`
* refactor: change `ratio-limit` to `ratio_limit`
* refactor: change `show-options-window` to `show_options_window`
* refactor: change `open-dialog-dir` to `open_dialog_dir`
* refactor: change `inhibit-desktop-hibernation` to `inhibit_desktop_hibernation`
* refactor: change `show-notification-area-icon` to `show_notification_area_icon`
* refactor: change `start-minimized` to `start_minimized`
* refactor: change `torrent-added-notification-enabled` to `torrent_added_notification_enabled`
* refactor: change `anti-brute-force-threshold` to `anti_brute_force_threshold`
* refactor: change `torrent-complete-notification-enabled` to `torrent_complete_notification_enabled`
* refactor: change `prompt-before-exit` to `prompt_before_exit`
* refactor: change `sort-mode` to `sort_mode`
* refactor: change `statusbar-stats` to `statusbar_stats`
* refactor: change `show-extra-peer-details` to `show_extra_peer_details`
* refactor: change `show-backup-trackers` to `show_backup_trackers`
* refactor: change `blocklist-date` to `blocklist_date`
* refactor: change `blocklist-updates-enabled` to `blocklist_updates_enabled`
* refactor: change `main-window-layout-order` to `main_window_layout_order`
* refactor: change `main-window-height` to `main_window_height`
* refactor: change `main-window-width` to `main_window_width`
* refactor: change `main-window-x` to `main_window_x`
* refactor: change `main-window-y` to `main_window_y`
* refactor: change `filter-mode` to `filter_mode`
* refactor: change `filter-trackers` to `filter_trackers`
* refactor: change `filter-text` to `filter_text`
* refactor: change `remote-session-enabled` to `remote_session_enabled`
* refactor: change `remote-session-host` to `remote_session_host`
* refactor: change `remote-session-https` to `remote_session_https`
* refactor: change `remote-session-password` to `remote_session_password`
* refactor: change `remote-session-port` to `remote_session_port`
* refactor: change `remote-session-requres-authentication` to `remote_session_requires_authentication`
* refactor: change `remote-session-username` to `remote_session_username`
* refactor: change `torrent-complete-sound-command` to `torrent_complete_sound_command`
* refactor: change `torrent-complete-sound-enabled` to `torrent_complete_sound_enabled`
* refactor: change `user-has-given-informed-consent` to `user_has_given_informed_consent`
* refactor: change `read-clipboard` to `read_clipboard`
* refactor: change `details-window-height` to `details_window_height`
* refactor: change `details-window-width` to `details_window_width`
* refactor: change `main-window-is-maximized` to `main_window_is_maximized`
* refactor: change `port-is-open` to `port_is_open`
* refactor: change `show-tracker-scrapes` to `show_tracker_scrapes`
* refactor: change `max-peers` to `max_peers`
* refactor: change `peers2-6` to `peers2_6`
* refactor: change `seeding-time-seconds` to `seeding_time_seconds`
* refactor: change `downloading-time-seconds` to `downloading_time_seconds`
* refactor: change `ratio-mode` to `ratio_mode`
* refactor: change `idle-limit` to `idle_limit`
* refactor: change `idle-mode` to `idle_mode`
* refactor: change `speed-Bps` to `speed_Bps`
* refactor: change `use-global-speed-limit` to `use_global_speed_limit`
* refactor: change `use-speed-limit` to `use_speed_limit`
* chore: remove TODO comment
* docs: add upgrade instructions to `5.0.0`
* chore: bump rpc semver major version
* chore: housekeeping
2025-12-01 16:08:18 -06:00
Charles Kerr
73e6892a74
refactor: let client pass in translated string of None when calling tr_strratio() ( #7805 )
2025-11-14 10:04:04 -06:00
Yat Ho
cfd5647c58
feat(remote): print seq download from piece in tor details ( #7808 )
2025-11-14 10:02:13 -06:00
Yat Ho
cf93d52f03
feat(remote): optionally specify piece to start sequentially download ( #7809 )
2025-11-14 09:39:47 -06:00
Yat Ho
8dc5d925fe
feat: convert preferred-transport to preferred_transports ( #7473 )
...
* feat: store `preferred_transports` as array in `settings.json`
* refactor: `Settings::save()` returns `tr_variant::Map`
* feat: new RPC API for `preferred_transports`
* feat: new arg `--preferred-transports` for remote
2025-11-12 17:17:29 -06:00
Charles Kerr
a5d09b29ff
chore: move tr_rpc_parse_list_str() from libtransmission to remote.cc ( #7797 )
...
libtransmission hasn't used this since 822fabb2 (#3549 )
2025-11-11 09:31:19 -06:00
Elek, David
d0e6b5519d
fix speed rate conversion, when requesting peer info ( #7796 )
2025-11-10 14:08:39 -06:00
Charles Kerr
db67c258a9
refactor: don't use evbuffer in transmission-remote ( #7739 )
...
* refactor: remove evbuffer use in transmission-remote
Keep reducing our libevent API use, especially outside of libtransmission
* chore: reduce some unnecessary diffs to main
2025-10-27 18:30:25 -05:00
Yat Ho
9055650c8f
refactor(remote): delegate percent done calculation to core ( #7622 )
2025-10-17 17:58:59 -05:00
Yat Ho
9c14fa58d8
feat: allow optional arguments in tr_getopt() ( #7510 )
...
* feat: allow optional arguments in `tr_getopt()`
* test: new tests for optional arg
* code review: `using Arg = tr_option::Arg`
* refactor: static assert option array size
* test: add new tests for missing arguments in the middle
* test: static auto constexpr
2025-10-15 12:08:11 -05:00
Yat Ho
fb25228f24
chore: bump {fmt} to 11.2.0 and fix compatibility ( #7612 )
...
* chore: bump fmt to 11.2.0
Acquire 6797f0c39a , which fixes compile error on GCC 15.1.
Acquire
9f269062a7 ,
which fixes buffer overflow in NetBSD 10.1 on GCC 10.5.
Replace `fmt::localtime` with `std::localtime`, as `fmt::` is now
deprecated.
* fix: format timezone ourselves on Windows
{fmt} 11.2.0 removed the ability to format `std::tm` with the format specifier `%z` on Windows, for a good reason. Ref: https://github.com/fmtlib/fmt/issues/4444
This forces us to implement our own solution on Windows as there's no alternative.
* fix: support `FMT_USE_EXCEPTIONS`
2025-10-14 12:53:08 -05:00
Yat Ho
a5884203fd
fix(remote): no-sequential-download description ( #7646 )
2025-10-14 11:27:35 -05:00
Yat Ho
08ec7fb7c7
build: lint header files with clang-tidy ( #7527 )
...
* build: clang-tidy headers when building libtransmission
* chore: revert `= default` workaround
It was introduced in 6909ec0bad to fix build issues with macOS 10.14. We
no longer support that version.
* fix: clang-tidy warnings for libtransmission
* build: clang-tidy headers when building tests
* fix: clang-tidy warnings for tests
* build: clang-tidy headers when building qt
* code review: don't manually edit mime-types.h
* code review: unify variable naming for static private members
2025-05-07 22:10:16 +01:00
Yat Ho
f0c8fd689a
fix(remote): print label separators correctly ( #7535 )
2025-05-06 22:09:29 +01:00
Yat Ho
c215de34d5
chore: move away from fmt/core.h ( #7557 )
2025-05-06 01:01:12 -05:00
Yat Ho
7b83c7d625
refactor: rename unreleased quarks to snake_case ( #7483 )
...
* refactor: rename `sequentialDownload` to `sequential_download`
* refactor: rename `beginPiece` to `begin_piece`
* refactor: rename `endPiece` to `end_piece`
* refactor: rename `ipProtocol` to `ip_protocol`
* refactor: rename `preferred-transport` to `preferred_transport`
2025-03-10 17:30:19 -05:00
Yat Ho
86e904d1a2
feat: sequential download cmdline options in remote and daemon ( #7048 )
...
* feat: add seq option in remote
* feat: print session sequential download setting in remote
* refactor: assert options torrent size in daemon
* feat: add seq option in daemon
2025-03-10 16:16:25 -05:00
Dzmitry Neviadomski
7e87adcd91
Fix building transmission with C++23 ( #6832 )
...
* fix: operator== should return bool in tr_strbuf
Fixes build error with C++20/C++23
error: return type 'auto' of selected 'operator==' function for rewritten '!=' comparison is not 'bool'
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
* fix: explicitly specify Blocklist::size() return type as size_t
Fixes building with C++20/C++23
error: no matching function for call to 'size'
function 'size' with deduced return type cannot be used before it is defined
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
* fix: wrap runtime format strings with fmt::runtime in library, daemon and cli
fmt::format_string ctor is consteval with C++20
See https://github.com/fmtlib/fmt/issues/2438
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
* fix: wrap runtime format strings with fmt::runtime for GTK client
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
* fix: allow to override C and CXX standard via cmdline or env
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
* fix: add job to check if transmission compiles with C++23
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
* Address code review by mikedld
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
* fix new found fmt build errors
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
* Address code review by tearfur
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
* fix: make tr_net_init_mgr singleton buildable with C++23
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
---------
Signed-off-by: Dzmitry Neviadomski <nevack.d@gmail.com >
Co-authored-by: Charles Kerr <charles@charleskerr.com >
2025-03-10 13:08:57 -05:00
Bheesham Persaud
1232f558a6
fix(remote): failure reason should be printed ( #7034 )
...
Uses `fmt::print` to log failure messages. Results in a connection
failure being printed as:
Unable to send request to 'http://localhost:9091/transmission/rpc/ ': Couldn't connect to server
Fixes #7010
2025-03-10 01:04:10 -05:00
Yat Ho
131caa1239
refactor: convert tr_net_init_mgr to singleton ( #6914 )
2024-12-30 09:32:11 -06:00
Yat Ho
1e16912ae4
refactor: new tr_variant API in transmission-remote and other cleanup ( #6798 )
...
* refactor: remove `Arguments`
* refactor: replace pointer args with lvalue reference
* refactor: use `uint16_t` for port number
* chore: housekeeping
* refactor: replace `char*` with `std::string_view`
* refactor: simplify argument parsing code
* refactor: use new `tr_variant` API in remote
* chore: rename function to snake_case
* chore: move `break` statements in switches outside of compound statements
* chore: use `std::string` literals
* refactor: extract tor start/stop to `MODE_TORRENT_START_STOP`
* refactor: extract tor actions to `MODE_TORRENT_ACTION`
* chore: iwyu
* fix: msvc build failure
* chore: misc cleanup
* fix: dereference optional
* chore: misc cleanup
* ui: fix minor formatting errors
* fix: remove redundant if branches for response string
* code review: remove `o` prefix for optionals
* code review: add condition clause
* code review: check `left_until_done` instead
* fix: unchecked nullptr
* code review: don't reassign method name
* code review: revert accidentally renaming `addIdArg` to `get_id_arg`
* code review: use `TR_ASSERT` instead of `assert`
* refactor: fix static auto constexpr naming
* code review: assert array size
* code review: assert that `arguments` key exists
2024-08-17 20:04:49 +01:00
Luukas Pörtfors
88d280be8f
feat(remote): implement idle seeding limits ( #2947 )
2024-05-27 15:08:33 -05:00
Yat Ho
edddf9d80e
fix: torrent details speed info unit ( #6845 )
2024-05-25 16:43:38 -05:00
Charles Kerr
3f6969217c
chore: remove FMT_STRING macros ( #6497 )
2024-01-06 14:05:18 -06:00
Charles Kerr
646883174b
chore: fix misc-use-anonymous-namespace warnings from clang-tidy ( #6488 )
2024-01-04 23:12:51 -06:00
Yat Ho
7573a98bb4
ui: unify percent done format in transmission-remote ( #6447 )
...
* ui: unify percent done display format in `remote`
* fix: adjust field width for the new format
2023-12-29 14:55:06 -06:00
Yat Ho
69f4b6cb2e
fix: sequentialDownload support in transmission-remote ( #6454 )
2023-12-29 13:25:55 -06:00
Charles Kerr
0ef34878de
refactor: remove tr_str_is_empty() ( #6432 )
...
* refactor: do not u se tr_str_is_empty() in tr_torrentSetLocation()
* refactor: do not use tr_str_is_empty() in remote.cc
* refactor: do not use tr_str_is_empty() in subprocess-win32
* refactor: remove tr_str_is_empty()
2023-12-24 12:01:49 -06:00
Charles Kerr
07d96036d9
refactor: Values pt. 6 - remove deprecated API ( #6250 )
2023-11-14 17:23:51 -06:00
Charles Kerr
2e32789193
refactor: add libtransmission::Values ( #6215 )
2023-11-09 08:39:06 -06:00
Julien
8ac323d5d6
chore: removed copyright timespans in headers ( #4850 )
2023-11-01 16:11:11 -05:00
Charles Kerr
bbc3ce039f
refactor: remove quark support from tr_variant ( #6159 )
2023-10-24 14:49:23 -04:00
Charles Kerr
32a62d85ea
refactor: more tr_variant API ( #6057 )
2023-10-02 16:18:35 -05:00
Charles Kerr
fbfbfac3ae
fix: minor coverity warnings ( #5916 )
...
* fix: unchecked return value from tr_variantDictFindInt()
coverity 1541113
* fix: unchecked return value from tr_variantDictFindBool()
coverity 1541112
* fix: copy-instead-of-move in tr_strlower()
coverity 1541092
* fix: use auto& instead of auto in test
coverity 1541084
* fix: logically dead code
coverity 1541065
* fix: copy-instead-of-move in tr_announcer_impl::addTorrent()
coverity 1541062
* fix: unchecked return value of tr_variantDictFindInt()
coverity 1541061
* fix: copy-instead-of-move in FilterBar::Impl::tracker_filter_model_update()
coverity 1541058
* fix: copy-instead-of-move in gtr_window_on_close()
* fix: silence invalid resource leak warning
coverity 1520595
* fix: unchecked return value from setsockopt()
coverity 1518345
* fix: dereference after null check (FORWARD_NULL)
coverity 1517816
2023-08-21 21:59:47 -05:00
Charles Kerr
59c638c63d
refactor: replace tr_variant::is_*() with tr_variant::holds_alternative() ( #5930 )
2023-08-21 16:16:54 -05:00
Charles Kerr
5837603b6f
refactor: make tr_variant follow RAII ( #5923 )
2023-08-20 23:15:23 -05:00
Charles Kerr
a4d205612a
refactor: add tr_variant_serde ( #5903 )
2023-08-17 11:02:45 -05:00
tearfur
5ec4ca550e
chore: iwyu ( #5746 )
2023-07-08 10:24:03 -05:00
lvd2
8b96e2616a
transmission-remote: for '-l', implement default sorting by addedDate ( #5608 )
2023-07-07 14:56:49 -05:00
tearfur
2211086338
fix: conform to libcurl requirements to avoid memory leak ( #5702 )
2023-07-05 22:05:03 -05:00
Charles Kerr
8183d7fddf
refactor: utils naming ( #5696 )
...
* chore: rename tr_strvContains to tr_strv_contains
* chore: rename tr_strvStartsWith to tr_strv_starts_with
* chore: rename tr_strvEndsWith to tr_strv_ends_with
* chore: rename tr_strvSep to tr_strv_sep
* chore: rename tr_strvStrip to tr_strv_strip
* chore: rename tr_strvToBuf to tr_strv_to_buf
* refactor: rename tr_saveFile() to tr_file_save()
rename tr_loadFile() to tr_file_read()
rename tr_moveFile() to tr_file_move()
* refactor: rename tr_parseNum() to tr_num_parse()
refactor: rename tr_parseNumRange() to tr_num_parse_range()
* chore: group related functions together in header
2023-06-30 09:49:58 -05:00
Charles Kerr
ce66e5c442
iwyu: remove, add std headers where used ( #5694 )
...
* chore: remove unused #include <array>
* chore: remove unused #include <chrono>
* chore: remove unused #include <set>
* chore: remove unused #include <algorithm>
* chore: remove unused #include "interned-string.h"
* chore: remove unused #include <list>
* chore: remove unused #include <optional>
* chore: iwyu <cstddef>
* chore: iwyu <ctime>
* chore: remove unused #include <cerrno>
* chore: remove unused #include <deque>
* chore: remove unused #include <vector>
* chore: remove unused #include <memory>
* chore: remove unused #include <unordered_set>
* chore: remove unused #include <array>
* chore: remove unused #include <mutex>
* chore: remove unused #include <functional>
* chore: remove unused #include <cmath>
2023-06-29 23:51:55 -05:00
lvd2
d0b0810457
fix: add 'years' and 'Infinity' to ETA in transmission-remote ( #5584 )
2023-06-20 12:29:57 -05:00
Robin Seth Ekman
c379cd727f
fix: transmission-remote only list every other label ( fixes #5571 ) ( #5572 )
2023-06-11 20:19:54 -05:00
Charles Kerr
60c68afdde
Revert "fix: some labels not displayed in transmission-remote ( #5600 )"
...
This reverts commit ebd5080a93 .
2023-06-11 11:25:35 -05:00
Charles Kerr
ebd5080a93
fix: some labels not displayed in transmission-remote ( #5600 )
...
Fixes #5571 .
2023-06-10 19:01:32 -05:00
Mike Gelfand
e8fcb025a0
fix: use user-preferred locale ( #5444 )
...
* Use user-preferred locale
Previous fix adding `L` format specifier was correct but only fixed half
of the problem, as C++ locale is set up to be "C" by default. GTK client
used to call `setlocale(LC_ALL, "")` to set up user-preferred locale
which only affected C functions and `std::locale` (used by libfmt) was
unaware of those changes.
Apply the fix to all the binaries since they're all doing some sort of
output to the user and calling libtransmission helpers, as well as using
libfmt directly.
* Improve libtransmission's json-test
Set the locale C++ way to avoid any sort of inconsistencies, and also
restore it to the old one once finished testing.
* Improve transmission-show test runner script
Quote outputs to avoid CMake error about `message()` being called with
no arguments. Capture stderr to the same output file. Fallback to `git
diff` if `diff` wasn't found. A few other minor changes.
2023-04-27 09:10:33 -05:00
Charles Kerr
7d86d67bc7
chore: prefer fmt/core.h over fmt/format.h ( #5404 )
2023-04-16 15:34:19 -05:00