* refactor: tr_sys_file_open() now takes a std::string_view arg
* refactor: tr_sys_path_copy() now takes a std::string_view arg
* refactor: tr_blocklistSetContent() now takes a std::string_view arg
* refactor: tr_sys_path_remove() now takes a std::string_view arg
* refactor: tr_sys_path_exists() now takes a std::string_view arg
* refactor: tr_sys_dir_create() now takes a std::string_view arg
* refactor: add private stat_sv(), lstat_sv() helpers in file-posix.cc
* refactor: tr_sys_path_is_same() now takes a std::string_view arg
* refactor: tr_sys_path_rename() now takes a std::string_view arg
* refactor: tr_ctorGetDownloadDir() returns a std::optional<std::string>
* refactor: tr_sessionGetConfigDir() now returns a std::string
* refactor: tr_sessionGetDownloadDir() now returns a std::string
* refactor: tr_sessionGetIncompleteDir() now returns a std::string
* refactor: tr_sessionGetRPCWhitelist() now returns a std::string
* refactor: tr_sessionGetRPCPassword() now returns a std::string
* refactor: tr_sessionGetRPCUsername() now returns a std::string
* refactor: tr_sessionGetScript() now returns a std::string
* refactor: tr_blocklistGetURL() now returns a std::string
* refactor: tr_ctorGetSourceFile() now returns a std::optional<std::string>
* refactor: tr_torrentFile() now returns a std::string
* refactor: replace TR_RPC_SESSION_ID_HEADER macro with TrRpcSessionIdHeader constant
refactor: replace TR_RPC_RPC_VERSION_HEADER macro with TrRpcVersionHeader constant
* refactor: remove macro TR_DEFAULT_RPC_PORT_STR
* refactor: remove macro TR_DEFAULT_PEER_PORT_STR
* refactor: remove macro TR_DEFAULT_PEER_LIMIT_GLOBAL_STR
* refactor: remove macro TR_DEFAULT_PEER_LIMIT_TORRENT_STR
* refactor: remove macro TR_DEFAULT_PEER_SOCKET_TOS_STR
* refactor: replace DEFAULT_BLOCKLIST_FILENAME macro with TrDefaultBlocklistFilename constant
* refactor: rename TrHttpServerDefaultBasePath to TrDefaultHttpServerBasePath for consistency with other defaults
* refactor: group constants together near the top of transmission.h
* refactor: hardcode string lengths to avoid FTBFS on older C++17 compilers
* refactor: move macros to the tr_getopt clients
* refactor: explicitly specify the parameter index to avoid passing in TrRpcSessionIdHeader twice
* refactor: add an error message to new static_asserts
* Revert "build(cmake): support building with (almost) all system 3rd-party libraries (#7554)"
This reverts commit a89ca4f2c9.
* fixup! refactor: use a map of getters, setters for `session_get` and `session_set` properties (#8024)
fix: capture-by-reference error in session_accessors()
* fix: 'Qt depends on a UTF-8 locale' CI warning
* fix: 'qt.qpa.xcb: could not connect to display' CI error
* build: overhaul tr_add_external_auto_library
* build: use package-provided CMake config file libevent
* build: use package-provided CMake config file miniupnpc
* build: update libutp find module
* build: make LIBNAME an optional parameter
* build: use package-provided CMake config file libdeflate
* build: update libb64 find module
* build: update libnatpmp find module
* build: update libpsl find module
* build: support system fast_float library
* chore: reformat long brew commands
* build: support system fmt library
* build: support system rapidjson library
* build: support system small library
* build: support system library utf8cpp
* build: support system library WideInteger
* build: support system library gtest
* fix: incorrectly labeled test suites
* build: remove unused parameters from tr_add_external_auto_library
* build: update crc32c cmake script
* fix: dht system library
* fix: add libutp interface target
* code review: move TrGtest.cmake
* code review: move tr_get_fmt_version into Findfmt.cmake
* code review: use option() for gtest
* code review: move find_package(PkgConfig) out of loop
* build: delete FindCrc32c.cmake
Impossible to parse package version from distributed source files.
* code review: Finddht.cmake
* build: delete FindFastFloat.cmake
Impossible to parse package version from distributed source files.
* code review: Findfmt.cmake
* code review: Findlibb64.cmake
* code review: Findlibdeflate.cmake
* code review: Findlibevent.cmake
* code review: Findlibnatpmp.cmake
* code review: Findlibpsl.cmake
* code review: Findlibutp.cmake
* code review: Findlibminiupnpc.cmake
* code review: FindRapidJSON.cmake
* build: delete FindSmall.cmake
Impossible to parse package version from distributed source files.
* build: only accept cmake config package for utf8cpp
Impossible to parse package version from distributed source files.
* build: delete FindWideInteger.cmake
Impossible to parse package version from distributed source files.
* build: add `USE_SYSTEM_DEFAULT`
* ci: drop Fedora 40 and adopt Fedora 43
* ci: try to silence system header warnings
* ci: use `cmake --install`
* Revert "build: only accept cmake config package for utf8cpp"
This reverts commit 2158d631fd.
* build: harden utf8cpp find module
* chore: bump wide-integer
Pick up bf9398f9da and bcc726a30f
* refactor: gtest should be included with angled brackets
Now that gtest is built as a system library, it should be included with angled brackets instead of quotes.
* code review: fixup libutp variables before `find_package_handle_standard_args`
* code review: define `WIDE_INTEGER_HAS_LIMB_TYPE_UINT64` only for targets depending on WideInteger
* chore: bump wide-integer
Pickup 4b2258acac so that wide-integer tests won't run in Transmission project.
* refactor: remove unused appname arg from tr_sessionLoadSettings()
* refactor: swap order of arguments to tr_sessionLoadSettings()
so way the optional arg can go at the end
* feat: use `Type=notify-reload` in daemon service
* build: keep systemd names consistent
---------
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* 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>
* fix: accurate timestamp in daemon logs
* fix: gtk build errors
* fixup! fix: gtk build errors
* code review: use system_clock typedefs
* code review: use the full buffer for string view
* fixup! fix: accurate timestamp in daemon logs
* code review: limit exposure of `using`
* refactor: use fmt::print in log.cc
https://github.com/fmtlib/fmt/issues/428#issuecomment-395442159
> You can use fmt::print("...\n") on Windows as well.
Use this mechanism instead of tr_sys_file_write_line()
* refactor: use FILE* in daemon
* refactor: remove unused tr_sys_file_flush_possible()
* refactor: remove unused tr_sys_file_write_line()
* refactor: remove unused tr_sys_file_get_std()
* refactor: remove unused tr_std_sys_file_t
This commit includes strict, but still compatible, service hardening for
transmission-daemon.service. The main goal is a defense-in-depth
strategy that protects users from unknown vulnerabilities in
transmission.
In practice, transmission does not use any of the features that are
blocked in this hardening. However, this is still a network facing
daemon that, by design, accepts connections from unknown peers. So
better safe than sorry.
This commit also installs the service via CMake
Co-authored-by: LaserEyess <LaserEyess@users.noreply.github.com>
* refactor: remove the tr_error** idiom
* fix: tr_error::message() is only constexpr in c++20 and up
* chore: silence a couple of g++-12 Wshadow warnings