diff --git a/libtransmission/ConvertUTF.c b/libtransmission/ConvertUTF.c index 9a8fd68c8..517714503 100644 --- a/libtransmission/ConvertUTF.c +++ b/libtransmission/ConvertUTF.c @@ -44,8 +44,6 @@ #endif #include /* strlen () */ -#include "transmission.h" - #include "ConvertUTF.h" static const int halfShift = 10; /* used for shifting by 10 bits */ @@ -364,7 +362,7 @@ tr_utf8_validate (const char * str, size_t max_len, const char ** end) if (str == NULL) return false; - sourceEnd = source + (max_len == TR_BAD_SIZE ? strlen (str) : max_len); + sourceEnd = source + (max_len == ((size_t)-1) ? strlen (str) : max_len); if (source == sourceEnd) { diff --git a/libtransmission/announcer-common.h b/libtransmission/announcer-common.h index e86298a5a..fb965e347 100644 --- a/libtransmission/announcer-common.h +++ b/libtransmission/announcer-common.h @@ -21,21 +21,18 @@ **** SCRAPE ***/ -enum -{ - /* pick a number small enough for common tracker software: - * - ocelot has no upper bound - * - opentracker has an upper bound of 64 - * - udp protocol has an upper bound of 74 - * - xbtt has no upper bound - * - * This is only an upper bound: if the tracker complains about - * length, announcer will incrementally lower the batch size. - */ - TR_MULTISCRAPE_MAX = 60 -}; +/* pick a number small enough for common tracker software: + * - ocelot has no upper bound + * - opentracker has an upper bound of 64 + * - udp protocol has an upper bound of 74 + * - xbtt has no upper bound + * + * This is only an upper bound: if the tracker complains about + * length, announcer will incrementally lower the batch size. + */ +auto inline constexpr TR_MULTISCRAPE_MAX = 60; -typedef struct +struct tr_scrape_request { /* the scrape URL */ char const* url; @@ -48,7 +45,7 @@ typedef struct /* how many hashes to use in the info_hash field */ int info_hash_count; -} tr_scrape_request; +}; struct tr_scrape_response_row { @@ -95,7 +92,7 @@ struct tr_scrape_response int min_request_interval; }; -typedef void (*tr_scrape_response_func)(tr_scrape_response const* response, void* user_data); +using tr_scrape_response_func = void (*)(tr_scrape_response const* response, void* user_data); void tr_tracker_http_scrape( tr_session* session, @@ -113,7 +110,7 @@ void tr_tracker_udp_scrape( **** ANNOUNCE ***/ -typedef enum +enum tr_announce_event { /* Note: the ordering of this enum's values is important to * announcer.c's tr_tier.announce_event_priority. If changing @@ -122,11 +119,11 @@ typedef enum TR_ANNOUNCE_EVENT_STARTED, TR_ANNOUNCE_EVENT_COMPLETED, TR_ANNOUNCE_EVENT_STOPPED, -} tr_announce_event; +}; char const* tr_announce_event_get_string(tr_announce_event); -typedef struct +struct tr_announce_request { tr_announce_event event; bool partial_seed; @@ -168,11 +165,11 @@ typedef struct /* the name to use when deep logging is enabled */ char log_name[128]; -} tr_announce_request; +}; struct tr_pex; -typedef struct +struct tr_announce_response { /* the torrent's info hash */ uint8_t info_hash[SHA_DIGEST_LENGTH]; @@ -221,9 +218,9 @@ typedef struct /* key generated by and returned from an http tracker. * if this is provided, subsequent http announces must include this. */ char* tracker_id_str; -} tr_announce_response; +}; -typedef void (*tr_announce_response_func)(tr_announce_response const* response, void* userdata); +using tr_announce_response_func = void (*)(tr_announce_response const* response, void* userdata); void tr_tracker_http_announce( tr_session* session, diff --git a/libtransmission/announcer-udp.cc b/libtransmission/announcer-udp.cc index bd02ff867..e08fcee54 100644 --- a/libtransmission/announcer-udp.cc +++ b/libtransmission/announcer-udp.cc @@ -95,14 +95,14 @@ static uint64_t evbuffer_read_ntoh_64(struct evbuffer* buf) ***** ****/ -typedef uint64_t tau_connection_t; +using tau_connection_t = uint64_t; enum { TAU_CONNECTION_TTL_SECS = 60 }; -typedef uint32_t tau_transaction_t; +using tau_transaction_t = uint32_t; static tau_transaction_t tau_transaction_new(void) { @@ -112,13 +112,13 @@ static tau_transaction_t tau_transaction_new(void) } /* used in the "action" field of a request */ -typedef enum +enum tau_action_t { TAU_ACTION_CONNECT = 0, TAU_ACTION_ANNOUNCE = 1, TAU_ACTION_SCRAPE = 2, TAU_ACTION_ERROR = 3 -} tau_action_t; +}; static bool is_tau_response_message(tau_action_t action, size_t msglen) { @@ -295,14 +295,14 @@ struct tau_announce_request void* user_data; }; -typedef enum +enum tau_announce_event { /* used in the "event" field of an announce request */ TAU_ANNOUNCE_EVENT_NONE = 0, TAU_ANNOUNCE_EVENT_COMPLETED = 1, TAU_ANNOUNCE_EVENT_STARTED = 2, TAU_ANNOUNCE_EVENT_STOPPED = 3 -} tau_announce_event; +}; static tau_announce_event get_tau_announce_event(tr_announce_event e) { diff --git a/libtransmission/announcer.cc b/libtransmission/announcer.cc index 3c98b6704..5f56e3e6f 100644 --- a/libtransmission/announcer.cc +++ b/libtransmission/announcer.cc @@ -145,7 +145,7 @@ struct tr_scrape_info /** * "global" (per-tr_session) fields */ -typedef struct tr_announcer +struct tr_announcer { std::set stops; std::map scrape_info; @@ -154,7 +154,7 @@ typedef struct tr_announcer struct event* upkeepTimer; int key; time_t tauUpkeepAt; -} tr_announcer; +}; static struct tr_scrape_info* tr_announcerGetScrapeInfo(struct tr_announcer* announcer, std::string const& url) { @@ -207,7 +207,7 @@ void tr_announcerClose(tr_session* session) ***/ /* a row in tr_tier's list of trackers */ -typedef struct +struct tr_tracker { char* key; char* announce; @@ -223,7 +223,7 @@ typedef struct int consecutiveFailures; uint32_t id; -} tr_tracker; +}; /* format: host+':'+ port */ static char* getKey(char const* url) @@ -267,7 +267,7 @@ static void trackerDestruct(tr_tracker* tracker) struct tr_torrent_tiers; /** @brief A group of trackers in a single tier, as per the multitracker spec */ -typedef struct tr_tier +struct tr_tier { /* number of up/down/corrupt bytes since the last time we sent an * "event=stopped" message that was acknowledged by the tracker */ @@ -314,7 +314,7 @@ typedef struct tr_tier char lastAnnounceStr[128]; char lastScrapeStr[128]; -} tr_tier; +}; static time_t get_next_scrape_time(tr_session const* session, tr_tier const* tier, int interval) { @@ -398,7 +398,7 @@ static void tierIncrementTracker(tr_tier* tier) * * this opaque data structure can be found in tr_torrent.tiers */ -typedef struct tr_torrent_tiers +struct tr_torrent_tiers { tr_tier* tiers; int tier_count; @@ -408,7 +408,7 @@ typedef struct tr_torrent_tiers tr_tracker_callback callback; void* callbackData; -} tr_torrent_tiers; +}; static tr_torrent_tiers* tiersNew(void) { diff --git a/libtransmission/announcer.h b/libtransmission/announcer.h index a86aada49..1fd0af856 100644 --- a/libtransmission/announcer.h +++ b/libtransmission/announcer.h @@ -21,19 +21,19 @@ struct tr_torrent_tiers; * *** Tracker Publish / Subscribe * **/ -typedef enum +enum TrackerEventType { TR_TRACKER_WARNING, TR_TRACKER_ERROR, TR_TRACKER_ERROR_CLEAR, TR_TRACKER_PEERS, TR_TRACKER_COUNTS, -} TrackerEventType; +}; struct tr_pex; /** @brief Notification object to tell listeners about announce or scrape occurences */ -typedef struct +struct tr_tracker_event { /* what type of event this is */ TrackerEventType messageType; @@ -49,9 +49,9 @@ typedef struct /* for TR_TRACKER_PEERS and TR_TRACKER_COUNTS */ int leechers; int seeders; -} tr_tracker_event; +}; -typedef void (*tr_tracker_callback)(tr_torrent* tor, tr_tracker_event const* event, void* client_data); +using tr_tracker_callback = void (*)(tr_torrent* tor, tr_tracker_event const* event, void* client_data); /** *** Session ctor/dtor diff --git a/libtransmission/bandwidth.h b/libtransmission/bandwidth.h index 96c45647f..7ed03bfaa 100644 --- a/libtransmission/bandwidth.h +++ b/libtransmission/bandwidth.h @@ -100,7 +100,7 @@ struct tr_band * and call tr_bandwidthClamp() before performing I/O to see how much * bandwidth they can safely use. */ -typedef struct tr_bandwidth +struct tr_bandwidth { /* these are PRIVATE IMPLEMENTATION details that should not be touched. * it's included in the header for inlining and composition. */ @@ -112,7 +112,7 @@ typedef struct tr_bandwidth unsigned int uniqueKey; tr_ptrArray children; /* struct tr_bandwidth */ struct tr_peerIo* peer; -} tr_bandwidth; +}; /** *** diff --git a/libtransmission/bitfield.h b/libtransmission/bitfield.h index 56d33322d..c8a18d1b9 100644 --- a/libtransmission/bitfield.h +++ b/libtransmission/bitfield.h @@ -16,20 +16,20 @@ #include "tr-macros.h" /** @brief Implementation of the BitTorrent spec's Bitfield array of bits */ -typedef struct tr_bitfield +struct tr_bitfield { - uint8_t* bits; - size_t alloc_count; + uint8_t* bits = nullptr; + size_t alloc_count = 0; - size_t bit_count; + size_t bit_count = 0; - size_t true_count; + size_t true_count = 0; /* Special cases for when full or empty but we don't know the bitCount. This occurs when a magnet link's peers send have all / have none */ - bool have_all_hint; - bool have_none_hint; -} tr_bitfield; + bool have_all_hint = false; + bool have_none_hint = false; +}; /*** **** diff --git a/libtransmission/blocklist.h b/libtransmission/blocklist.h index e5ca42976..eb50014ab 100644 --- a/libtransmission/blocklist.h +++ b/libtransmission/blocklist.h @@ -16,7 +16,7 @@ struct tr_address; -typedef struct tr_blocklistFile tr_blocklistFile; +struct tr_blocklistFile; tr_blocklistFile* tr_blocklistFileNew(char const* filename, bool isEnabled); diff --git a/libtransmission/cache.h b/libtransmission/cache.h index aaa52d33e..14cc45f91 100644 --- a/libtransmission/cache.h +++ b/libtransmission/cache.h @@ -15,8 +15,7 @@ #include "tr-macros.h" struct evbuffer; - -typedef struct tr_cache tr_cache; +struct tr_cache; /*** **** diff --git a/libtransmission/completion.h b/libtransmission/completion.h index d2161af63..1e6bba008 100644 --- a/libtransmission/completion.h +++ b/libtransmission/completion.h @@ -16,7 +16,7 @@ #include "bitfield.h" #include "utils.h" /* tr_getRatio() */ -typedef struct tr_completion +struct tr_completion { tr_torrent* tor; @@ -40,7 +40,7 @@ typedef struct tr_completion /* number of bytes we want or have now. [0..sizeWhenDone] */ uint64_t sizeNow; -} tr_completion; +}; /** *** Life Cycle diff --git a/libtransmission/crypto-utils-polarssl.cc b/libtransmission/crypto-utils-polarssl.cc index 03e3a84ea..06d7b2aaf 100644 --- a/libtransmission/crypto-utils-polarssl.cc +++ b/libtransmission/crypto-utils-polarssl.cc @@ -40,9 +40,9 @@ #define MY_NAME "tr_crypto_utils" -typedef API(ctr_drbg_context) api_ctr_drbg_context; -typedef API(sha1_context) api_sha1_context; -typedef API(dhm_context) api_dhm_context; +using api_ctr_drbg_context = API(ctr_drbg_context); +using api_sha1_context = API(sha1_context); +using api_dhm_context = API(dhm_context); static void log_polarssl_error(int error_code, char const* file, int line) { diff --git a/libtransmission/crypto-utils.h b/libtransmission/crypto-utils.h index 0227050cb..4ac6cbf69 100644 --- a/libtransmission/crypto-utils.h +++ b/libtransmission/crypto-utils.h @@ -22,17 +22,17 @@ **/ /** @brief Opaque SHA1 context type. */ -typedef void* tr_sha1_ctx_t; +using tr_sha1_ctx_t = void*; /** @brief Opaque DH context type. */ -typedef void* tr_dh_ctx_t; +using tr_dh_ctx_t = void*; /** @brief Opaque DH secret key type. */ -typedef void* tr_dh_secret_t; +using tr_dh_secret_t = void*; /** @brief Opaque SSL context type. */ -typedef void* tr_ssl_ctx_t; +using tr_ssl_ctx_t = void*; /** @brief Opaque X509 certificate store type. */ -typedef void* tr_x509_store_t; +using tr_x509_store_t = void*; /** @brief Opaque X509 certificate type. */ -typedef void* tr_x509_cert_t; +using tr_x509_cert_t = void*; /** * @brief Generate a SHA1 hash from one or more chunks of memory. diff --git a/libtransmission/crypto.h b/libtransmission/crypto.h index 6bd2f2ab8..9618876d7 100644 --- a/libtransmission/crypto.h +++ b/libtransmission/crypto.h @@ -31,7 +31,7 @@ enum }; /** @brief Holds state information for encrypted peer communications */ -typedef struct +struct tr_crypto { struct arc4_context* dec_key; struct arc4_context* enc_key; @@ -41,7 +41,7 @@ typedef struct uint8_t torrentHash[SHA_DIGEST_LENGTH]; bool isIncoming; bool torrentHashIsSet; -} tr_crypto; +}; /** @brief construct a new tr_crypto object */ void tr_cryptoConstruct(tr_crypto* crypto, uint8_t const* torrentHash, bool isIncoming); diff --git a/libtransmission/error.h b/libtransmission/error.h index 6fb559998..e5247250b 100644 --- a/libtransmission/error.h +++ b/libtransmission/error.h @@ -18,13 +18,13 @@ */ /** @brief Structure holding error information. */ -typedef struct tr_error +struct tr_error { /** @brief Error code, platform-specific */ int code; /** @brief Error message */ char* message; -} tr_error; +}; /** * @brief Create new error object using literal error message. diff --git a/libtransmission/file.h b/libtransmission/file.h index 5ef514acc..ffc14493a 100644 --- a/libtransmission/file.h +++ b/libtransmission/file.h @@ -27,11 +27,11 @@ struct tr_error; #ifndef _WIN32 /** @brief Platform-specific file descriptor type. */ -typedef int tr_sys_file_t; +using tr_sys_file_t = int; /** @brief Platform-specific invalid file descriptor constant. */ #define TR_BAD_SYS_FILE (-1) /** @brief Platform-specific directory descriptor type. */ -typedef void* tr_sys_dir_t; +using tr_sys_dir_t = void*; /** @brief Platform-specific end-of-line sequence. */ #define TR_NATIVE_EOL_STR "\n" /** @brief Platform-specific end-of-line sequence length. */ @@ -39,9 +39,10 @@ typedef void* tr_sys_dir_t; #else -typedef HANDLE tr_sys_file_t; +using tr_sys_file_t = HANDLE; #define TR_BAD_SYS_FILE INVALID_HANDLE_VALUE -typedef struct tr_sys_dir_win32* tr_sys_dir_t; +struct tr_sys_dir_win32; +using tr_sys_dir_t = tr_sys_dir_win32*; #define TR_NATIVE_EOL_STR "\r\n" #define TR_NATIVE_EOL_STR_SIZE 2 @@ -50,14 +51,14 @@ typedef struct tr_sys_dir_win32* tr_sys_dir_t; /** @brief Platform-specific invalid directory descriptor constant. */ #define TR_BAD_SYS_DIR ((tr_sys_dir_t) nullptr) -typedef enum +enum tr_std_sys_file_t { TR_STD_SYS_FILE_IN, TR_STD_SYS_FILE_OUT, TR_STD_SYS_FILE_ERR -} tr_std_sys_file_t; +}; -typedef enum +enum tr_sys_file_open_flags_t { TR_SYS_FILE_READ = (1 << 0), TR_SYS_FILE_WRITE = (1 << 1), @@ -66,57 +67,57 @@ typedef enum TR_SYS_FILE_APPEND = (1 << 4), TR_SYS_FILE_TRUNCATE = (1 << 5), TR_SYS_FILE_SEQUENTIAL = (1 << 6) -} tr_sys_file_open_flags_t; +}; -typedef enum +enum tr_seek_origin_t { TR_SEEK_SET, TR_SEEK_CUR, TR_SEEK_END -} tr_seek_origin_t; +}; -typedef enum +enum tr_sys_file_lock_flags_t { TR_SYS_FILE_LOCK_SH = (1 << 0), TR_SYS_FILE_LOCK_EX = (1 << 1), TR_SYS_FILE_LOCK_NB = (1 << 2), TR_SYS_FILE_LOCK_UN = (1 << 3) -} tr_sys_file_lock_flags_t; +}; -typedef enum +enum tr_sys_path_get_info_flags_t { TR_SYS_PATH_NO_FOLLOW = (1 << 0) -} tr_sys_path_get_info_flags_t; +}; -typedef enum +enum tr_sys_file_advice_t { TR_SYS_FILE_ADVICE_WILL_NEED, TR_SYS_FILE_ADVICE_DONT_NEED -} tr_sys_file_advice_t; +}; -typedef enum +enum tr_sys_file_preallocate_flags_t { TR_SYS_FILE_PREALLOC_SPARSE = (1 << 0) -} tr_sys_file_preallocate_flags_t; +}; -typedef enum +enum tr_sys_dir_create_flags_t { TR_SYS_DIR_CREATE_PARENTS = (1 << 0) -} tr_sys_dir_create_flags_t; +}; -typedef enum +enum tr_sys_path_type_t { TR_SYS_PATH_IS_FILE, TR_SYS_PATH_IS_DIRECTORY, TR_SYS_PATH_IS_OTHER -} tr_sys_path_type_t; +}; -typedef struct tr_sys_path_info +struct tr_sys_path_info { - tr_sys_path_type_t type; - uint64_t size; - time_t last_modified_at; -} tr_sys_path_info; + tr_sys_path_type_t type = {}; + uint64_t size = 0; + time_t last_modified_at = 0; +}; /** * @name Platform-specific wrapper functions diff --git a/libtransmission/handshake.cc b/libtransmission/handshake.cc index 865fefdaa..7f146600e 100644 --- a/libtransmission/handshake.cc +++ b/libtransmission/handshake.cc @@ -85,7 +85,7 @@ enum *** **/ -typedef enum +enum handshake_state_t { /* incoming */ AWAITING_HANDSHAKE, @@ -103,7 +103,7 @@ typedef enum AWAITING_PAD_D, /* */ N_STATES -} handshake_state_t; +}; struct tr_handshake { @@ -211,13 +211,13 @@ static bool buildHandshakeMessage(tr_handshake* handshake, uint8_t* buf) static ReadState tr_handshakeDone(tr_handshake* handshake, bool isConnected); -typedef enum +enum handshake_parse_err_t { HANDSHAKE_OK, HANDSHAKE_ENCRYPTION_WRONG, HANDSHAKE_BAD_TORRENT, HANDSHAKE_PEER_IS_SELF, -} handshake_parse_err_t; +}; static handshake_parse_err_t parseHandshake(tr_handshake* handshake, struct evbuffer* inbuf) { diff --git a/libtransmission/handshake.h b/libtransmission/handshake.h index b6ae1f130..f1f2ab26d 100644 --- a/libtransmission/handshake.h +++ b/libtransmission/handshake.h @@ -22,10 +22,10 @@ struct tr_peerIo; /** @brief opaque struct holding hanshake state information. freed when the handshake is completed. */ -typedef struct tr_handshake tr_handshake; +struct tr_handshake; /* returns true on success, false on error */ -typedef bool (*handshakeDoneCB)( +using handshakeDoneCB = bool (*)( struct tr_handshake* handshake, struct tr_peerIo* io, bool readAnythingFromPeer, diff --git a/libtransmission/history.h b/libtransmission/history.h index 20c23d436..12f35c0f6 100644 --- a/libtransmission/history.h +++ b/libtransmission/history.h @@ -29,7 +29,7 @@ enum TR_RECENT_HISTORY_PERIOD_SEC = 60 }; -typedef struct tr_recentHistory +struct tr_recentHistory { /* these are PRIVATE IMPLEMENTATION details included for composition only. * Don't access these directly! */ @@ -41,7 +41,7 @@ typedef struct tr_recentHistory unsigned int n; time_t date; } slices[TR_RECENT_HISTORY_PERIOD_SEC]; -} tr_recentHistory; +}; /** * @brief add a counter to the recent history object. diff --git a/libtransmission/magnet.h b/libtransmission/magnet.h index c9d5a4439..085e656a3 100644 --- a/libtransmission/magnet.h +++ b/libtransmission/magnet.h @@ -16,7 +16,7 @@ #include "transmission.h" #include "variant.h" -typedef struct tr_magnet_info +struct tr_magnet_info { uint8_t hash[20]; @@ -27,7 +27,7 @@ typedef struct tr_magnet_info int webseedCount; char** webseeds; -} tr_magnet_info; +}; tr_magnet_info* tr_magnetParse(char const* uri); diff --git a/libtransmission/makemeta.h b/libtransmission/makemeta.h index 51c0731b0..e3c42b8b7 100644 --- a/libtransmission/makemeta.h +++ b/libtransmission/makemeta.h @@ -11,22 +11,22 @@ #include "tr-macros.h" #include "transmission.h" -typedef struct tr_metainfo_builder_file +struct tr_metainfo_builder_file { char* filename; uint64_t size; -} tr_metainfo_builder_file; +}; -typedef enum +enum tr_metainfo_builder_err { TR_MAKEMETA_OK, TR_MAKEMETA_URL, TR_MAKEMETA_CANCELLED, TR_MAKEMETA_IO_READ, /* see builder.errfile, builder.my_errno */ TR_MAKEMETA_IO_WRITE /* see builder.errfile, builder.my_errno */ -} tr_metainfo_builder_err; +}; -typedef struct tr_metainfo_builder +struct tr_metainfo_builder { /** *** These are set by tr_makeMetaInfoBuilderCreate() @@ -78,7 +78,7 @@ typedef struct tr_metainfo_builder **/ struct tr_metainfo_builder* nextBuilder; -} tr_metainfo_builder; +}; tr_metainfo_builder* tr_metaInfoBuilderCreate(char const* topFile); diff --git a/libtransmission/natpmp.cc b/libtransmission/natpmp.cc index e310c9f75..42c0ed633 100644 --- a/libtransmission/natpmp.cc +++ b/libtransmission/natpmp.cc @@ -30,7 +30,7 @@ static char const* getKey(void) return _("Port Forwarding (NAT-PMP)"); } -typedef enum +enum tr_natpmp_state { TR_NATPMP_IDLE, TR_NATPMP_ERR, @@ -40,7 +40,7 @@ typedef enum TR_NATPMP_RECV_MAP, TR_NATPMP_SEND_UNMAP, TR_NATPMP_RECV_UNMAP -} tr_natpmp_state; +}; struct tr_natpmp { diff --git a/libtransmission/natpmp_local.h b/libtransmission/natpmp_local.h index 2dc970423..beaef54c9 100644 --- a/libtransmission/natpmp_local.h +++ b/libtransmission/natpmp_local.h @@ -17,7 +17,7 @@ * @{ */ -typedef struct tr_natpmp tr_natpmp; +struct tr_natpmp; tr_natpmp* tr_natpmpInit(void); diff --git a/libtransmission/net.h b/libtransmission/net.h index ecaba4311..422da16a9 100644 --- a/libtransmission/net.h +++ b/libtransmission/net.h @@ -38,7 +38,7 @@ #include "tr-macros.h" #ifdef _WIN32 -typedef SOCKET tr_socket_t; +using tr_socket_t = SOCKET; #define TR_BAD_SOCKET INVALID_SOCKET #undef EADDRINUSE @@ -63,7 +63,7 @@ typedef SOCKET tr_socket_t; #define sockerrno WSAGetLastError() #else /** @brief Platform-specific socket descriptor type. */ -typedef int tr_socket_t; +using tr_socket_t = int; /** @brief Platform-specific invalid socket descriptor constant. */ #define TR_BAD_SOCKET (-1) @@ -76,14 +76,14 @@ typedef int tr_socket_t; ***** ****/ -typedef enum tr_address_type +enum tr_address_type { TR_AF_INET, TR_AF_INET6, NUM_TR_AF_INET_TYPES -} tr_address_type; +}; -typedef struct tr_address +struct tr_address { tr_address_type type; union @@ -91,7 +91,7 @@ typedef struct tr_address struct in6_addr addr6; struct in_addr addr4; } addr; -} tr_address; +}; extern tr_address const tr_inaddr_any; extern tr_address const tr_in6addr_any; diff --git a/libtransmission/peer-common.h b/libtransmission/peer-common.h index 266b8eb5b..f3de52c78 100644 --- a/libtransmission/peer-common.h +++ b/libtransmission/peer-common.h @@ -37,7 +37,7 @@ enum *** Peer Publish / Subscribe **/ -typedef enum +enum PeerEventType { TR_PEER_CLIENT_GOT_BLOCK, TR_PEER_CLIENT_GOT_CHOKE, @@ -52,9 +52,9 @@ typedef enum TR_PEER_CLIENT_GOT_HAVE_NONE, TR_PEER_PEER_GOT_PIECE_DATA, TR_PEER_ERROR -} PeerEventType; +}; -typedef struct +struct tr_peer_event { PeerEventType eventType; @@ -64,17 +64,18 @@ typedef struct uint32_t length; /* for GOT_BLOCK + GOT_PIECE_DATA */ int err; /* errno for GOT_ERROR */ tr_port port; /* for GOT_PORT */ -} tr_peer_event; +}; -typedef void (*tr_peer_callback)(struct tr_peer* peer, tr_peer_event const* event, void* client_data); +using tr_peer_callback = void (*)(struct tr_peer* peer, tr_peer_event const* event, void* client_data); /*** **** ***/ -typedef void (*tr_peer_destruct_func)(struct tr_peer* peer); -typedef bool ( - *tr_peer_is_transferring_pieces_func)(struct tr_peer const* peer, uint64_t now, tr_direction direction, unsigned int* Bps); +using tr_peer_destruct_func = void (*)(struct tr_peer* peer); + +using tr_peer_is_transferring_pieces_func = + bool (*)(tr_peer const* peer, uint64_t now, tr_direction direction, unsigned int* Bps); struct tr_peer_virtual_funcs { @@ -88,7 +89,7 @@ struct tr_peer_virtual_funcs * @see struct peer_atom * @see tr_peerMsgs */ -typedef struct tr_peer +struct tr_peer { /* whether or not we should free this peer soon. NOTE: private to peer-mgr.c */ @@ -125,7 +126,7 @@ typedef struct tr_peer tr_recentHistory cancelsSentToPeer; struct tr_peer_virtual_funcs const* funcs; -} tr_peer; +}; void tr_peerConstruct(struct tr_peer* peer, tr_torrent const* tor); @@ -140,13 +141,13 @@ bool tr_peerIsSeed(struct tr_peer const* peer); **** ***/ -typedef struct tr_swarm_stats +struct tr_swarm_stats { int activePeerCount[2]; int activeWebseedCount; int peerCount; int peerFromCount[TR_PEER_FROM__MAX]; -} tr_swarm_stats; +}; void tr_swarmGetStats(struct tr_swarm const* swarm, tr_swarm_stats* setme); diff --git a/libtransmission/peer-io.h b/libtransmission/peer-io.h index fc58def0e..d5326de29 100644 --- a/libtransmission/peer-io.h +++ b/libtransmission/peer-io.h @@ -35,27 +35,27 @@ struct tr_peerIo; * @{ */ -typedef enum +enum ReadState { READ_NOW, READ_LATER, READ_ERR -} ReadState; +}; -typedef enum +enum tr_encryption_type { /* these match the values in MSE's crypto_select */ PEER_ENCRYPTION_NONE = (1 << 0), PEER_ENCRYPTION_RC4 = (1 << 1) -} tr_encryption_type; +}; -typedef ReadState (*tr_can_read_cb)(struct tr_peerIo* io, void* user_data, size_t* setme_piece_byte_count); +using tr_can_read_cb = ReadState (*)(struct tr_peerIo* io, void* user_data, size_t* setme_piece_byte_count); -typedef void (*tr_did_write_cb)(struct tr_peerIo* io, size_t bytesWritten, bool wasPieceData, void* userData); +using tr_did_write_cb = void (*)(struct tr_peerIo* io, size_t bytesWritten, bool wasPieceData, void* userData); -typedef void (*tr_net_error_cb)(struct tr_peerIo* io, short what, void* userData); +using tr_net_error_cb = void (*)(struct tr_peerIo* io, short what, void* userData); -typedef struct tr_peerIo +struct tr_peerIo { bool isEncrypted; bool isIncoming; @@ -100,7 +100,7 @@ typedef struct tr_peerIo struct event* event_read; struct event* event_write; -} tr_peerIo; +}; /** *** diff --git a/libtransmission/peer-mgr.cc b/libtransmission/peer-mgr.cc index 29967560c..2ea5f52b9 100644 --- a/libtransmission/peer-mgr.cc +++ b/libtransmission/peer-mgr.cc @@ -163,7 +163,7 @@ enum piece_sort_state }; /** @brief Opaque, per-torrent data structure for peer connection information */ -typedef struct tr_swarm +struct tr_swarm { tr_swarm_stats stats; @@ -207,7 +207,7 @@ typedef struct tr_swarm * requests are considered 'fast' are allowed to request a block that's * already been requested from another (slower?) peer. */ int endgame; -} tr_swarm; +}; struct tr_peerMgr { @@ -2928,12 +2928,12 @@ static bool isPeerInteresting(tr_torrent* const tor, bool const* const piece_is_ return false; } -typedef enum +enum tr_rechoke_state { RECHOKE_STATE_GOOD, RECHOKE_STATE_UNTESTED, RECHOKE_STATE_BAD -} tr_rechoke_state; +}; struct tr_rechoke_info { diff --git a/libtransmission/peer-mgr.h b/libtransmission/peer-mgr.h index 00bffaabc..73d3ad284 100644 --- a/libtransmission/peer-mgr.h +++ b/libtransmission/peer-mgr.h @@ -29,9 +29,9 @@ */ struct UTPSocket; +struct tr_peerMgr; struct tr_peer_stat; struct tr_torrent; -typedef struct tr_peerMgr tr_peerMgr; /* added_f's bitwise-or'ed flags */ enum @@ -49,12 +49,12 @@ enum ADDED_F_CONNECTABLE = 16 }; -typedef struct tr_pex +struct tr_pex { tr_address addr; tr_port port; /* this field is in network byte order */ uint8_t flags; -} tr_pex; +}; struct peer_atom; struct tr_peerIo; diff --git a/libtransmission/peer-msgs.cc b/libtransmission/peer-msgs.cc index b9d5e7c77..163f6ee17 100644 --- a/libtransmission/peer-msgs.cc +++ b/libtransmission/peer-msgs.cc @@ -111,12 +111,12 @@ enum AWAITING_BT_PIECE }; -typedef enum +enum encryption_preference_t { ENCRYPTION_PREFERENCE_UNKNOWN, ENCRYPTION_PREFERENCE_YES, ENCRYPTION_PREFERENCE_NO -} encryption_preference_t; +}; /** *** @@ -2261,7 +2261,7 @@ static void tellPeerWhatWeHave(tr_peerMsgs* msgs) #define MAX_PEX_ADDED 50 #define MAX_PEX_DROPPED 50 -typedef struct +struct PexDiffs { tr_pex* added; tr_pex* dropped; @@ -2269,7 +2269,7 @@ typedef struct int addedCount; int droppedCount; int elementCount; -} PexDiffs; +}; static void pexAddedCb(void const* vpex, void* userData) { @@ -2302,7 +2302,7 @@ static inline void pexElementCb(void const* vpex, void* userData) diffs->elements[diffs->elementCount++] = *pex; } -typedef void (*tr_set_func)(void const* element, void* userData); +using tr_set_func = void (*)(void const* element, void* userData); /** * @brief find the differences and commonalities in two sorted sets diff --git a/libtransmission/peer-msgs.h b/libtransmission/peer-msgs.h index d0516e915..57245f203 100644 --- a/libtransmission/peer-msgs.h +++ b/libtransmission/peer-msgs.h @@ -26,7 +26,7 @@ struct tr_torrent; * @{ */ -typedef struct tr_peerMsgs tr_peerMsgs; +struct tr_peerMsgs; #define PEER_MSGS(o) (tr_peerMsgsCast(o)) diff --git a/libtransmission/platform.cc b/libtransmission/platform.cc index 6533324f8..7a3e75791 100644 --- a/libtransmission/platform.cc +++ b/libtransmission/platform.cc @@ -51,9 +51,9 @@ ***/ #ifdef _WIN32 -typedef DWORD tr_thread_id; +using tr_thread_id = DWORD; #else -typedef pthread_t tr_thread_id; +using tr_thread_id = pthread_t; #endif static tr_thread_id tr_getCurrentThread(void) diff --git a/libtransmission/platform.h b/libtransmission/platform.h index 51d27654e..3012bbd7c 100644 --- a/libtransmission/platform.h +++ b/libtransmission/platform.h @@ -47,7 +47,7 @@ char* tr_getSessionIdDir(void); * @{ */ -typedef struct tr_thread tr_thread; +struct tr_thread; /** @brief Instantiate a new process thread */ tr_thread* tr_threadNew(void (*func)(void*), void* arg); @@ -60,7 +60,7 @@ bool tr_amInThread(tr_thread const* thread); **** ***/ -typedef struct tr_lock tr_lock; +struct tr_lock; /** @brief Create a new thread mutex object */ tr_lock* tr_lockNew(void); diff --git a/libtransmission/port-forwarding.h b/libtransmission/port-forwarding.h index 6aef55dff..5cf4c50bd 100644 --- a/libtransmission/port-forwarding.h +++ b/libtransmission/port-forwarding.h @@ -21,7 +21,7 @@ struct tr_bindsockets; -typedef struct tr_shared tr_shared; +struct tr_shared; tr_shared* tr_sharedInit(tr_session*); diff --git a/libtransmission/ptrarray.h b/libtransmission/ptrarray.h index 59947ed37..2377ffa15 100644 --- a/libtransmission/ptrarray.h +++ b/libtransmission/ptrarray.h @@ -23,16 +23,16 @@ /** * @brief simple pointer array that resizes itself dynamically. */ -typedef struct tr_ptrArray +struct tr_ptrArray { void** items; int n_items; int n_alloc; -} tr_ptrArray; +}; -typedef tr_voidptr_compare_func PtrArrayCompareFunc; +using PtrArrayCompareFunc = tr_voidptr_compare_func; -typedef void (*PtrArrayForeachFunc)(void*); +using PtrArrayForeachFunc = void (*)(void*); /** @brief Destructor to free a tr_ptrArray's internal memory */ void tr_ptrArrayDestruct(tr_ptrArray*, PtrArrayForeachFunc func); diff --git a/libtransmission/quark.h b/libtransmission/quark.h index d7304c2e2..397c748ae 100644 --- a/libtransmission/quark.h +++ b/libtransmission/quark.h @@ -11,7 +11,7 @@ #include "tr-macros.h" /* Quarks — a 2-way association between a string and a unique integer identifier */ -typedef size_t tr_quark; +using tr_quark = size_t; /* * Predefined Quarks. diff --git a/libtransmission/rpc-server.h b/libtransmission/rpc-server.h index 496359b63..7d15c4356 100644 --- a/libtransmission/rpc-server.h +++ b/libtransmission/rpc-server.h @@ -14,7 +14,7 @@ #include "variant.h" -typedef struct tr_rpc_server tr_rpc_server; +struct tr_rpc_server; tr_rpc_server* tr_rpcInit(tr_session* session, tr_variant* settings); diff --git a/libtransmission/rpcimpl.cc b/libtransmission/rpcimpl.cc index 8cf5ef4db..34dd84607 100644 --- a/libtransmission/rpcimpl.cc +++ b/libtransmission/rpcimpl.cc @@ -50,11 +50,11 @@ #define dbgmsg(...) tr_logAddDeepNamed("RPC", __VA_ARGS__) #endif -typedef enum +enum tr_format { TR_FORMAT_OBJECT = 0, TR_FORMAT_TABLE -} tr_format; +}; /*** **** @@ -2741,7 +2741,7 @@ static char const* sessionClose( **** ***/ -typedef char const* (*handler)(tr_session*, tr_variant*, tr_variant*, struct tr_rpc_idle_data*); +using handler = char const* (*)(tr_session*, tr_variant*, tr_variant*, struct tr_rpc_idle_data*); static struct method { diff --git a/libtransmission/rpcimpl.h b/libtransmission/rpcimpl.h index caf152ae8..ff9043d87 100644 --- a/libtransmission/rpcimpl.h +++ b/libtransmission/rpcimpl.h @@ -16,7 +16,7 @@ **** RPC processing ***/ -typedef void (*tr_rpc_response_func)(tr_session* session, tr_variant* response, void* user_data); +using tr_rpc_response_func = void (*)(tr_session* session, tr_variant* response, void* user_data); /* http://www.json.org/ */ void tr_rpc_request_exec_json( diff --git a/libtransmission/session-id.h b/libtransmission/session-id.h index 9edf2418d..51a748dda 100644 --- a/libtransmission/session-id.h +++ b/libtransmission/session-id.h @@ -10,7 +10,7 @@ #include "tr-macros.h" -typedef struct tr_session_id* tr_session_id_t; +using tr_session_id_t = struct tr_session_id*; /** * Create new session identifier object. diff --git a/libtransmission/session.h b/libtransmission/session.h index 39b7af3dd..e1f9a7d4b 100644 --- a/libtransmission/session.h +++ b/libtransmission/session.h @@ -29,19 +29,19 @@ #include "utils.h" #include "variant.h" -typedef enum +enum tr_tristate_t { TR_NET_OK, TR_NET_ERROR, TR_NET_WAIT -} tr_tristate_t; +}; -typedef enum +enum tr_auto_switch_state_t { TR_AUTO_SWITCH_UNUSED, TR_AUTO_SWITCH_ON, TR_AUTO_SWITCH_OFF, -} tr_auto_switch_state_t; +}; enum { diff --git a/libtransmission/torrent.h b/libtransmission/torrent.h index 4630a65d7..897ba51a9 100644 --- a/libtransmission/torrent.h +++ b/libtransmission/torrent.h @@ -112,12 +112,12 @@ void tr_torrentSetDateDone(tr_torrent* torrent, time_t doneDate); torrent's content than any other mime-type. */ char const* tr_torrentPrimaryMimeType(tr_torrent const* tor); -typedef enum +enum tr_verify_state { TR_VERIFY_NONE, TR_VERIFY_WAIT, TR_VERIFY_NOW -} tr_verify_state; +}; void tr_torrentSetVerifyState(tr_torrent* tor, tr_verify_state state); diff --git a/libtransmission/tr-getopt.h b/libtransmission/tr-getopt.h index a6288840a..c3ce668dd 100644 --- a/libtransmission/tr-getopt.h +++ b/libtransmission/tr-getopt.h @@ -18,7 +18,7 @@ /** @brief Similar to optind, this is the current index into argv */ extern int tr_optind; -typedef struct tr_option +struct tr_option { int val; /* the value to return from tr_getopt() */ char const* longName; /* --long-form */ @@ -26,7 +26,7 @@ typedef struct tr_option char const* shortName; /* short form */ bool has_arg; /* 0 for no argument, 1 for argument */ char const* argName; /* argument's description for tr_getopt_usage() */ -} tr_option; +}; enum { diff --git a/libtransmission/tr-lpd.cc b/libtransmission/tr-lpd.cc index e68ea3b7d..b69c96cdd 100644 --- a/libtransmission/tr-lpd.cc +++ b/libtransmission/tr-lpd.cc @@ -30,7 +30,7 @@ THE SOFTWARE. #ifdef _WIN32 #include #include -typedef uint16_t in_port_t; /* all missing */ +using in_port_t = uint16_t; /* all missing */ #else #include #include /* close() */ diff --git a/libtransmission/transmission.h b/libtransmission/transmission.h index 5c48cb561..0cc6c53bf 100644 --- a/libtransmission/transmission.h +++ b/libtransmission/transmission.h @@ -27,40 +27,39 @@ #include "tr-macros.h" -typedef uint32_t tr_file_index_t; -typedef uint32_t tr_piece_index_t; +using tr_file_index_t = uint32_t; +using tr_piece_index_t = uint32_t; /* assuming a 16 KiB block, a 32-bit block index gives us a maximum torrent size of 63 TiB. * if we ever need to grow past that, change this to uint64_t ;) */ -typedef uint32_t tr_block_index_t; -typedef uint16_t tr_port; - -typedef struct tr_ctor tr_ctor; -typedef struct tr_info tr_info; -typedef struct tr_torrent tr_torrent; -typedef struct tr_session tr_session; +using tr_block_index_t = uint32_t; +using tr_port = uint16_t; +struct tr_ctor; struct tr_error; +struct tr_info; +struct tr_session; +struct tr_torrent; struct tr_variant; -typedef int8_t tr_priority_t; +using tr_priority_t = int8_t; -typedef int (*tr_voidptr_compare_func)(void const* lhs, void const* rhs); +using tr_voidptr_compare_func = int (*)(void const* lhs, void const* rhs); #define TR_RPC_SESSION_ID_HEADER "X-Transmission-Session-Id" -typedef enum +enum tr_preallocation_mode { TR_PREALLOCATE_NONE = 0, TR_PREALLOCATE_SPARSE = 1, TR_PREALLOCATE_FULL = 2 -} tr_preallocation_mode; +}; -typedef enum +enum tr_encryption_mode { TR_CLEAR_PREFERRED, TR_ENCRYPTION_PREFERRED, TR_ENCRYPTION_REQUIRED -} tr_encryption_mode; +}; /*** **** @@ -379,7 +378,7 @@ bool tr_sessionIsRPCPasswordEnabled(tr_session const* session); char const* tr_sessionGetRPCBindAddress(tr_session const* session); -typedef enum +enum tr_rpc_callback_type { TR_RPC_TORRENT_ADDED, TR_RPC_TORRENT_STARTED, @@ -391,9 +390,9 @@ typedef enum TR_RPC_SESSION_CHANGED, TR_RPC_SESSION_QUEUE_POSITIONS_CHANGED, /* catch potentially multiple torrents being moved in the queue */ TR_RPC_SESSION_CLOSE -} tr_rpc_callback_type; +}; -typedef enum +enum tr_rpc_callback_status { /* no special handling is needed by the caller */ TR_RPC_OK = 0, @@ -402,9 +401,9 @@ typedef enum * need to keep the torrent alive long enough to cleanly close * some resources in another thread. */ TR_RPC_NOREMOVE = (1 << 1) -} tr_rpc_callback_status; +}; -typedef tr_rpc_callback_status (*tr_rpc_func)( // +using tr_rpc_func = tr_rpc_callback_status (*)( // tr_session* session, tr_rpc_callback_type type, struct tr_torrent* tor_or_null, @@ -426,7 +425,7 @@ void tr_sessionSetRPCCallback(tr_session* session, tr_rpc_func func, void* user_ **/ /** @brief Used by tr_sessionGetStats() and tr_sessionGetCumulativeStats() */ -typedef struct tr_session_stats +struct tr_session_stats { float ratio; /* TR_RATIO_INF, TR_RATIO_NA, or total up/down */ uint64_t uploadedBytes; /* total up */ @@ -434,7 +433,7 @@ typedef struct tr_session_stats uint64_t filesAdded; /* number of files added */ uint64_t sessionCount; /* program started N times */ uint64_t secondsActive; /* how long Transmisson's been running */ -} tr_session_stats; +}; /** @brief Get bandwidth use statistics for the current session */ void tr_sessionGetStats(tr_session const* session, tr_session_stats* setme); @@ -486,24 +485,24 @@ void tr_sessionSetPeerPortRandomOnStart(tr_session* session, bool random); bool tr_sessionGetPeerPortRandomOnStart(tr_session* session); -typedef enum +enum tr_port_forwarding { TR_PORT_ERROR, TR_PORT_UNMAPPED, TR_PORT_UNMAPPING, TR_PORT_MAPPING, TR_PORT_MAPPED -} tr_port_forwarding; +}; tr_port_forwarding tr_sessionGetPortForwarding(tr_session const* session); -typedef enum +enum tr_direction { TR_CLIENT_TO_PEER = 0, TR_UP = 0, TR_PEER_TO_CLIENT = 1, TR_DOWN = 1 -} tr_direction; +}; /*** **** @@ -538,7 +537,7 @@ int tr_sessionGetAltSpeedBegin(tr_session const*); void tr_sessionSetAltSpeedEnd(tr_session*, int minsSinceMidnight); int tr_sessionGetAltSpeedEnd(tr_session const*); -typedef enum +enum tr_sched_day { TR_SCHED_SUN = (1 << 0), TR_SCHED_MON = (1 << 1), @@ -550,12 +549,12 @@ typedef enum TR_SCHED_WEEKDAY = (TR_SCHED_MON | TR_SCHED_TUES | TR_SCHED_WED | TR_SCHED_THURS | TR_SCHED_FRI), TR_SCHED_WEEKEND = (TR_SCHED_SUN | TR_SCHED_SAT), TR_SCHED_ALL = (TR_SCHED_WEEKDAY | TR_SCHED_WEEKEND) -} tr_sched_day; +}; void tr_sessionSetAltSpeedDay(tr_session*, tr_sched_day day); tr_sched_day tr_sessionGetAltSpeedDay(tr_session const*); -typedef void (*tr_altSpeedFunc)(tr_session*, bool active, bool userDriven, void*); +using tr_altSpeedFunc = void (*)(tr_session*, bool active, bool userDriven, void*); void tr_sessionSetAltSpeedFunc(tr_session*, tr_altSpeedFunc, void*); @@ -718,18 +717,18 @@ void tr_sessionSetTorrentDoneScript(tr_session*, char const* scriptFilename); ** Message Logging */ -typedef enum +enum tr_log_level { TR_LOG_SILENT = 0, TR_LOG_ERROR = 1, TR_LOG_INFO = 2, TR_LOG_DEBUG = 3, TR_LOG_FIREHOSE = 4 -} tr_log_level; +}; void tr_logSetLevel(tr_log_level); -typedef struct tr_log_message +struct tr_log_message { /* TR_LOG_ERROR, TR_LOG_INFO, or TR_LOG_DEBUG */ tr_log_level level; @@ -753,7 +752,7 @@ typedef struct tr_log_message /* linked list of messages */ struct tr_log_message* next; -} tr_log_message; +}; tr_log_message* tr_logGetQueue(void); bool tr_logGetQueueEnabled(void); @@ -827,11 +826,11 @@ char const* tr_blocklistGetURL(tr_session const*); Every call to tr_ctorSetMetainfo* () frees the previous metainfo. */ -typedef enum +enum tr_ctorMode { TR_FALLBACK, /* indicates the ctor value should be used only in case of missing resume settings */ TR_FORCE /* indicates the ctor value should be used regardless of what's in the resume settings */ -} tr_ctorMode; +}; /** @brief Create a torrent constructor object used to instantiate a tr_torrent @param session_or_NULL the tr_session. @@ -917,12 +916,12 @@ tr_session* tr_ctorGetSession(tr_ctor const* ctor); or NULL if tr_ctorSetMetainfoFromFile() wasn't used */ char const* tr_ctorGetSourceFile(tr_ctor const* ctor); -typedef enum +enum tr_parse_result { TR_PARSE_OK, TR_PARSE_ERR, TR_PARSE_DUPLICATE -} tr_parse_result; +}; /** * @brief Parses the specified metainfo @@ -974,7 +973,7 @@ tr_torrent* tr_torrentNew(tr_ctor const* ctor, int* setme_error, int* setme_dupl /** @addtogroup tr_torrent Torrents @{ */ -typedef bool (*tr_fileFunc)(char const* filename, struct tr_error** error); +using tr_fileFunc = bool (*)(char const* filename, struct tr_error** error); /** @brief Removes our .torrent and .resume files for this torrent */ void tr_torrentRemove(tr_torrent* torrent, bool removeLocalData, tr_fileFunc removeFunc); @@ -985,7 +984,7 @@ void tr_torrentStart(tr_torrent* torrent); /** @brief Stop (pause) a torrent */ void tr_torrentStop(tr_torrent* torrent); -typedef void (*tr_torrent_rename_done_func)( // +using tr_torrent_rename_done_func = void (*)( // tr_torrent* torrent, char const* oldpath, char const* newname, @@ -1113,7 +1112,7 @@ bool tr_torrentUsesSessionLimits(tr_torrent const*); ***** Ratio Limits ****/ -typedef enum +enum tr_ratiolimit { /* follow the global settings */ TR_RATIOLIMIT_GLOBAL = 0, @@ -1121,7 +1120,7 @@ typedef enum TR_RATIOLIMIT_SINGLE = 1, /* override the global settings, seeding regardless of ratio */ TR_RATIOLIMIT_UNLIMITED = 2 -} tr_ratiolimit; +}; void tr_torrentSetRatioMode(tr_torrent* tor, tr_ratiolimit mode); @@ -1137,7 +1136,7 @@ bool tr_torrentGetSeedRatio(tr_torrent const*, double* ratio); ***** Idle Time Limits ****/ -typedef enum +enum tr_idlelimit { /* follow the global settings */ TR_IDLELIMIT_GLOBAL = 0, @@ -1145,7 +1144,7 @@ typedef enum TR_IDLELIMIT_SINGLE = 1, /* override the global settings, seeding regardless of activity */ TR_IDLELIMIT_UNLIMITED = 2 -} tr_idlelimit; +}; void tr_torrentSetIdleMode(tr_torrent* tor, tr_idlelimit mode); @@ -1233,13 +1232,13 @@ static inline char* tr_torrentGetMagnetLink(tr_torrent const* tor) **/ /** @brief a part of tr_info that represents a single tracker */ -typedef struct tr_tracker_info +struct tr_tracker_info { int tier; char* announce; char* scrape; uint32_t id; /* unique identifier used to match to a tr_tracker_stat */ -} tr_tracker_info; +}; /** * @brief Modify a torrent's tracker list. @@ -1260,26 +1259,26 @@ bool tr_torrentSetAnnounceList(tr_torrent* torrent, tr_tracker_info const* track *** **/ -typedef enum +enum tr_completeness { TR_LEECH, /* doesn't have all the desired pieces */ TR_SEED, /* has the entire torrent */ TR_PARTIAL_SEED /* has the desired pieces, but not the entire torrent */ -} tr_completeness; +}; /** * @param wasRunning whether or not the torrent was running when * it changed its completeness state */ -typedef void (*tr_torrent_completeness_func)( // +using tr_torrent_completeness_func = void (*)( // tr_torrent* torrent, tr_completeness completeness, bool wasRunning, void* user_data); -typedef void (*tr_torrent_ratio_limit_hit_func)(tr_torrent* torrent, void* user_data); +using tr_torrent_ratio_limit_hit_func = void (*)(tr_torrent* torrent, void* user_data); -typedef void (*tr_torrent_idle_limit_hit_func)(tr_torrent* torrent, void* user_data); +using tr_torrent_idle_limit_hit_func = void (*)(tr_torrent* torrent, void* user_data); /** * Register to be notified whenever a torrent's "completeness" @@ -1298,7 +1297,8 @@ void tr_torrentSetCompletenessCallback(tr_torrent* torrent, tr_torrent_completen void tr_torrentClearCompletenessCallback(tr_torrent* torrent); -typedef void (*tr_torrent_metadata_func)(tr_torrent* torrent, void* user_data); +using tr_torrent_metadata_func = void (*)(tr_torrent* torrent, void* user_data); + /** * Register to be notified whenever a torrent changes from * having incomplete metadata to having complete metadata. @@ -1350,7 +1350,7 @@ bool tr_torrentCanManualUpdate(tr_torrent const* torrent); **** tr_peer_stat ***/ -typedef struct tr_peer_stat +struct tr_peer_stat { bool isUTP; @@ -1394,7 +1394,7 @@ typedef struct tr_peer_stat /* how many requests we've made and are currently awaiting a response for */ int pendingReqsToPeer; -} tr_peer_stat; +}; tr_peer_stat* tr_torrentPeers(tr_torrent const* torrent, int* peerCount); @@ -1404,7 +1404,7 @@ void tr_torrentPeersFree(tr_peer_stat* peerStats, int peerCount); **** tr_tracker_stat ***/ -typedef enum +enum tr_tracker_state { /* we won't (announce,scrape) this torrent to this tracker because * the torrent is stopped, or because of an error, or whatever */ @@ -1417,9 +1417,9 @@ typedef enum TR_TRACKER_QUEUED = 2, /* we're (announcing,scraping) this torrent right now */ TR_TRACKER_ACTIVE = 3 -} tr_tracker_state; +}; -typedef struct +struct tr_tracker_stat { /* how many downloads this tracker knows of (-1 means it does not know) */ int downloadCount; @@ -1510,7 +1510,7 @@ typedef struct /* used to match to a tr_tracker_info */ uint32_t id; -} tr_tracker_stat; +}; tr_tracker_stat* tr_torrentTrackers(tr_torrent const* torrent, int* setmeTrackerCount); @@ -1528,11 +1528,11 @@ void tr_torrentTrackersFree(tr_tracker_stat* trackerStats, int trackerCount); */ double* tr_torrentWebSpeeds_KBps(tr_torrent const* torrent); -typedef struct tr_file_stat +struct tr_file_stat { uint64_t bytesCompleted; float progress; -} tr_file_stat; +}; tr_file_stat* tr_torrentFiles(tr_torrent const* torrent, tr_file_index_t* fileCount); @@ -1559,7 +1559,7 @@ void tr_torrentAmountFinished(tr_torrent const* torrent, float* tab, int size); * being called during verification. * @param user_data the user-defined pointer from tr_torrentVerify() */ -typedef void (*tr_verify_done_func)(tr_torrent* torrent, bool aborted, void* user_data); +using tr_verify_done_func = void (*)(tr_torrent* torrent, bool aborted, void* user_data); /** * Queue a torrent for verification. @@ -1575,7 +1575,7 @@ void tr_torrentVerify(tr_torrent* torrent, tr_verify_done_func callback_func_or_ **********************************************************************/ /** @brief a part of tr_info that represents a single file of the torrent's content */ -typedef struct tr_file +struct tr_file { uint64_t length; /* Length of the file, in bytes */ char* name; /* Path to the file */ @@ -1585,16 +1585,16 @@ typedef struct tr_file tr_piece_index_t firstPiece; /* We need pieces [firstPiece... */ tr_piece_index_t lastPiece; /* ...lastPiece] to dl this file */ uint64_t offset; /* file begins at the torrent's nth byte */ -} tr_file; +}; /** @brief a part of tr_info that represents a single piece of the torrent's content */ -typedef struct tr_piece +struct tr_piece { time_t timeChecked; /* the last time we tested this piece */ uint8_t hash[SHA_DIGEST_LENGTH]; /* pieces hash */ int8_t priority; /* TR_PRI_HIGH, _NORMAL, or _LOW */ bool dnd; /* "do not download" flag */ -} tr_piece; +}; /** @brief information about a torrent that comes from its metainfo file */ struct tr_info @@ -1652,7 +1652,7 @@ static inline bool tr_torrentHasMetadata(tr_torrent const* tor) * Note: these values will become a straight enum at some point in the future. * Do not rely on their current `bitfield' implementation */ -typedef enum +enum tr_torrent_activity { TR_STATUS_STOPPED = 0, /* Torrent is stopped */ TR_STATUS_CHECK_WAIT = 1, /* Queued to check files */ @@ -1661,7 +1661,7 @@ typedef enum TR_STATUS_DOWNLOAD = 4, /* Downloading */ TR_STATUS_SEED_WAIT = 5, /* Queued to seed */ TR_STATUS_SEED = 6 /* Seeding */ -} tr_torrent_activity; +}; enum { @@ -1675,7 +1675,7 @@ enum TR_PEER_FROM__MAX }; -typedef enum +enum tr_stat_errtype { /* everything's fine */ TR_STAT_OK = 0, @@ -1685,10 +1685,10 @@ typedef enum TR_STAT_TRACKER_ERROR = 2, /* local trouble, such as disk full or permissions error */ TR_STAT_LOCAL_ERROR = 3 -} tr_stat_errtype; +}; /** @brief Used by tr_torrentStat() to tell clients about a torrent's state and statistics */ -typedef struct tr_stat +struct tr_stat { /** The torrent's unique Id. @see tr_torrentId() */ @@ -1858,7 +1858,7 @@ typedef struct tr_stat /** True if the torrent is running, but has been idle for long enough to be considered stalled. @see tr_sessionGetQueueStalledMinutes() */ bool isStalled; -} tr_stat; +}; /** Return a pointer to an tr_stat structure with updated information on the torrent. This is typically called by the GUI clients every diff --git a/libtransmission/trevent.cc b/libtransmission/trevent.cc index a92ad58e4..eb8c71fa7 100644 --- a/libtransmission/trevent.cc +++ b/libtransmission/trevent.cc @@ -33,7 +33,7 @@ #ifdef _WIN32 -typedef SOCKET tr_pipe_end_t; +using tr_pipe_end_t = SOCKET; static int pgpipe(tr_pipe_end_t handles[2]) { @@ -139,7 +139,7 @@ static int piperead(tr_pipe_end_t s, void* buf, int len) #define pipewrite(a, b, c) send(a, (char*)b, c, 0) #else -typedef int tr_pipe_end_t; +using tr_pipe_end_t = int; #define piperead(a, b, c) read(a, b, c) #define pipewrite(a, b, c) write(a, b, c) #endif @@ -148,7 +148,7 @@ typedef int tr_pipe_end_t; **** ***/ -typedef struct tr_event_handle +struct tr_event_handle { bool die; tr_pipe_end_t fds[2]; @@ -157,7 +157,7 @@ typedef struct tr_event_handle tr_thread* thread; struct event_base* base; struct event* pipeEvent; -} tr_event_handle; +}; struct tr_run_data { diff --git a/libtransmission/upnp.cc b/libtransmission/upnp.cc index 06be64ff2..d0dc5770e 100644 --- a/libtransmission/upnp.cc +++ b/libtransmission/upnp.cc @@ -29,14 +29,14 @@ static char const* getKey(void) return _("Port Forwarding (UPnP)"); } -typedef enum +enum tr_upnp_state { TR_UPNP_IDLE, TR_UPNP_ERR, TR_UPNP_DISCOVER, TR_UPNP_MAP, TR_UPNP_UNMAP -} tr_upnp_state; +}; struct tr_upnp { diff --git a/libtransmission/upnp.h b/libtransmission/upnp.h index ffb6404a2..59f761bda 100644 --- a/libtransmission/upnp.h +++ b/libtransmission/upnp.h @@ -17,7 +17,7 @@ * @{ */ -typedef struct tr_upnp tr_upnp; +struct tr_upnp; tr_upnp* tr_upnpInit(void); diff --git a/libtransmission/variant-common.h b/libtransmission/variant-common.h index 56f0194bc..3834ecb0c 100644 --- a/libtransmission/variant-common.h +++ b/libtransmission/variant-common.h @@ -14,7 +14,7 @@ #include "tr-macros.h" -typedef void (*VariantWalkFunc)(tr_variant const* val, void* user_data); +using VariantWalkFunc = void (*)(tr_variant const* val, void* user_data); struct VariantWalkFuncs { diff --git a/libtransmission/variant.h b/libtransmission/variant.h index 75554f552..e16633848 100644 --- a/libtransmission/variant.h +++ b/libtransmission/variant.h @@ -29,12 +29,12 @@ struct tr_error; * @{ */ -typedef enum +enum tr_string_type { TR_STRING_TYPE_QUARK, TR_STRING_TYPE_HEAP, TR_STRING_TYPE_BUF -} tr_string_type; +}; /* these are PRIVATE IMPLEMENTATION details that should not be touched. * I'll probably change them just to break your code! HA HA HA! @@ -66,11 +66,11 @@ enum /* These are PRIVATE IMPLEMENTATION details that should not be touched. * I'll probably change them just to break your code! HA HA HA! * it's included in the header for inlining and composition */ -typedef struct tr_variant +struct tr_variant { - char type; + char type = '\0'; - tr_quark key; + tr_quark key = TR_KEY_NONE; union { @@ -88,8 +88,8 @@ typedef struct tr_variant size_t count; struct tr_variant* vals; } l; - } val; -} tr_variant; + } val = {}; +}; void tr_variantFree(tr_variant*); @@ -97,12 +97,12 @@ void tr_variantFree(tr_variant*); **** Serialization / Deserialization ***/ -typedef enum +enum tr_variant_fmt { TR_VARIANT_FMT_BENC, TR_VARIANT_FMT_JSON, TR_VARIANT_FMT_JSON_LEAN /* saves bandwidth by omitting all whitespace. */ -} tr_variant_fmt; +}; int tr_variantToFile(tr_variant const* variant, tr_variant_fmt fmt, char const* filename); diff --git a/libtransmission/watchdir-common.h b/libtransmission/watchdir-common.h index f3d807848..32ef1a39a 100644 --- a/libtransmission/watchdir-common.h +++ b/libtransmission/watchdir-common.h @@ -15,10 +15,10 @@ #include #include -typedef struct tr_watchdir_backend +struct tr_watchdir_backend { void (*free_func)(struct tr_watchdir_backend*); -} tr_watchdir_backend; +}; #define BACKEND_DOWNCAST(b) (reinterpret_cast(b)) diff --git a/libtransmission/watchdir-generic.cc b/libtransmission/watchdir-generic.cc index b51fca0e6..1e94f1a2f 100644 --- a/libtransmission/watchdir-generic.cc +++ b/libtransmission/watchdir-generic.cc @@ -33,13 +33,13 @@ **** ***/ -typedef struct tr_watchdir_generic +struct tr_watchdir_generic { tr_watchdir_backend base; struct event* event; std::unordered_set dir_entries; -} tr_watchdir_generic; +}; #define BACKEND_UPCAST(b) (reinterpret_cast(b)) diff --git a/libtransmission/watchdir-inotify.cc b/libtransmission/watchdir-inotify.cc index b675507c6..fe3a22462 100644 --- a/libtransmission/watchdir-inotify.cc +++ b/libtransmission/watchdir-inotify.cc @@ -38,14 +38,14 @@ **** ***/ -typedef struct tr_watchdir_inotify +struct tr_watchdir_inotify { tr_watchdir_backend base; int infd; int inwd; struct bufferevent* event; -} tr_watchdir_inotify; +}; #define BACKEND_UPCAST(b) ((tr_watchdir_inotify*)(b)) diff --git a/libtransmission/watchdir-kqueue.cc b/libtransmission/watchdir-kqueue.cc index 0ecc4dce3..697f8218a 100644 --- a/libtransmission/watchdir-kqueue.cc +++ b/libtransmission/watchdir-kqueue.cc @@ -44,7 +44,7 @@ **** ***/ -typedef struct tr_watchdir_kqueue +struct tr_watchdir_kqueue { tr_watchdir_backend base; @@ -52,7 +52,7 @@ typedef struct tr_watchdir_kqueue int dirfd; struct event* event; std::unordered_set dir_entries; -} tr_watchdir_kqueue; +}; #define BACKEND_UPCAST(b) (reinterpret_cast(b)) diff --git a/libtransmission/watchdir-win32.cc b/libtransmission/watchdir-win32.cc index 79d76c4b5..ec85c08b4 100644 --- a/libtransmission/watchdir-win32.cc +++ b/libtransmission/watchdir-win32.cc @@ -40,7 +40,7 @@ **** ***/ -typedef struct tr_watchdir_win32 +struct tr_watchdir_win32 { tr_watchdir_backend base; @@ -50,7 +50,7 @@ typedef struct tr_watchdir_win32 evutil_socket_t notify_pipe[2]; struct bufferevent* event; HANDLE thread; -} tr_watchdir_win32; +}; #define BACKEND_UPCAST(b) ((tr_watchdir_win32*)(b)) @@ -67,7 +67,7 @@ static BOOL tr_get_overlapped_result_ex( DWORD timeout, BOOL alertable) { - typedef BOOL(WINAPI * impl_t)(HANDLE, LPOVERLAPPED, LPDWORD, DWORD, BOOL); + using impl_t = BOOL(WINAPI*)(HANDLE, LPOVERLAPPED, LPDWORD, DWORD, BOOL); static impl_t real_impl = nullptr; static bool is_real_impl_valid = false; diff --git a/libtransmission/watchdir.cc b/libtransmission/watchdir.cc index 8eb0411ad..6eaa5fdf6 100644 --- a/libtransmission/watchdir.cc +++ b/libtransmission/watchdir.cc @@ -113,14 +113,14 @@ static tr_watchdir_status tr_watchdir_process_impl(tr_watchdir_t handle, char co **** ***/ -typedef struct tr_watchdir_retry +struct tr_watchdir_retry { tr_watchdir_t handle; char* name; size_t counter; struct event* timer; struct timeval interval; -} tr_watchdir_retry; +}; /* Non-static and mutable for unit tests */ auto tr_watchdir_retry_limit = size_t{ 3 }; diff --git a/libtransmission/watchdir.h b/libtransmission/watchdir.h index b897a19a5..cd1535a94 100644 --- a/libtransmission/watchdir.h +++ b/libtransmission/watchdir.h @@ -12,16 +12,16 @@ struct event_base; -typedef struct tr_watchdir* tr_watchdir_t; +using tr_watchdir_t = struct tr_watchdir*; -typedef enum +enum tr_watchdir_status { TR_WATCHDIR_ACCEPT, TR_WATCHDIR_IGNORE, TR_WATCHDIR_RETRY -} tr_watchdir_status; +}; -typedef tr_watchdir_status (*tr_watchdir_cb)(tr_watchdir_t handle, char const* name, void* user_data); +using tr_watchdir_cb = tr_watchdir_status (*)(tr_watchdir_t handle, char const* name, void* user_data); /* ... */ diff --git a/libtransmission/web.h b/libtransmission/web.h index 39ebdc676..e3f282cbb 100644 --- a/libtransmission/web.h +++ b/libtransmission/web.h @@ -13,15 +13,15 @@ struct tr_address; struct tr_web_task; -typedef enum +enum tr_web_close_mode { TR_WEB_CLOSE_WHEN_IDLE, TR_WEB_CLOSE_NOW -} tr_web_close_mode; +}; void tr_webClose(tr_session* session, tr_web_close_mode close_mode); -typedef void (*tr_web_done_func)( +using tr_web_done_func = void (*)( tr_session* session, bool did_connect_flag, bool timeout_flag, diff --git a/libtransmission/webseed.h b/libtransmission/webseed.h index 7be5cecda..5a289db19 100644 --- a/libtransmission/webseed.h +++ b/libtransmission/webseed.h @@ -12,7 +12,7 @@ #error only libtransmission should #include this header. #endif -typedef struct tr_webseed tr_webseed; +struct tr_webseed; #include "peer-common.h" diff --git a/qt/AddData.cc b/qt/AddData.cc index 3f0610602..967bd5cf9 100644 --- a/qt/AddData.cc +++ b/qt/AddData.cc @@ -25,7 +25,7 @@ QString getNameFromMetainfo(QByteArray const& metainfo) tr_ctor* ctor = tr_ctorNew(nullptr); tr_ctorSetMetainfo(ctor, metainfo.constData(), metainfo.size()); - tr_info inf; + auto inf = tr_info{}; if (tr_torrentParse(ctor, &inf) == TR_PARSE_OK) { name = QString::fromUtf8(inf.name); // metainfo is required to be UTF-8 diff --git a/qt/MakeDialog.cc b/qt/MakeDialog.cc index 62f52e7b8..3748e0c6c 100644 --- a/qt/MakeDialog.cc +++ b/qt/MakeDialog.cc @@ -156,7 +156,7 @@ void MakeDialog::makeTorrent() } else { - tr_tracker_info tmp; + auto tmp = tr_tracker_info{}; tmp.announce = tr_strdup(announce_url.toUtf8().constData()); tmp.tier = tier; trackers.append(tmp); diff --git a/qt/WatchDir.cc b/qt/WatchDir.cc index ba3a5e5d8..5d419a271 100644 --- a/qt/WatchDir.cc +++ b/qt/WatchDir.cc @@ -32,7 +32,7 @@ WatchDir::WatchDir(TorrentModel const& model) int WatchDir::metainfoTest(QString const& filename) const { int ret; - tr_info inf; + auto inf = tr_info{}; tr_ctor* ctor = tr_ctorNew(nullptr); // parse diff --git a/tests/libtransmission/crypto-test.cc b/tests/libtransmission/crypto-test.cc index 4b242e935..c791edbe1 100644 --- a/tests/libtransmission/crypto-test.cc +++ b/tests/libtransmission/crypto-test.cc @@ -22,7 +22,7 @@ TEST(Crypto, torrentHash) { - tr_crypto a; + auto a = tr_crypto{}; auto hash = std::array{}; for (size_t i = 0; i < hash.size(); ++i) diff --git a/tests/libtransmission/makemeta-test.cc b/tests/libtransmission/makemeta-test.cc index c7a298d2d..47e92ef4e 100644 --- a/tests/libtransmission/makemeta-test.cc +++ b/tests/libtransmission/makemeta-test.cc @@ -37,7 +37,7 @@ protected: bool isPrivate) { // char* sandbox; - tr_info inf; + auto inf = tr_info{}; // create a single input file auto input_file = makeString(tr_buildPath(sandboxDir().data(), "test.XXXXXX", nullptr)); @@ -151,7 +151,7 @@ protected: // now let's check our work: parse the .torrent file auto* ctor = tr_ctorNew(nullptr); tr_ctorSetMetainfoFromFile(ctor, torrent_file); - tr_info inf; + auto inf = tr_info{}; auto parse_result = tr_torrentParse(ctor, &inf); EXPECT_EQ(TR_PARSE_OK, parse_result); diff --git a/tests/libtransmission/metainfo-test.cc b/tests/libtransmission/metainfo-test.cc index f1fccbf68..712f6a45a 100644 --- a/tests/libtransmission/metainfo-test.cc +++ b/tests/libtransmission/metainfo-test.cc @@ -29,7 +29,7 @@ TEST(Metainfo, magnetLink) auto* ctor = tr_ctorNew(nullptr); tr_ctorSetMetainfoFromMagnetLink(ctor, MagnetLink); - tr_info inf; + auto inf = tr_info{}; auto const parse_result = tr_torrentParse(ctor, &inf); EXPECT_EQ(TR_PARSE_OK, parse_result); EXPECT_EQ(0, inf.fileCount); // because it's a magnet link