From 7f147c65fb07a6baed3d079703ff0a31d1b1ca4c Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Thu, 5 Nov 2020 16:46:21 -0600 Subject: [PATCH] refactor: fix more sonarcloud warnings (#1508) * refactor: const correctness * refactor: use getpwuid_r instead of getpwuid * chore: simplify dict walking loop logic * refactor: remove dead store assignment in announcer * refactor: use std::make_shared --- daemon/daemon.c | 20 +++--- gtk/details.c | 93 ++++++++++---------------- gtk/file-list.c | 33 +++++---- gtk/filter.c | 2 +- gtk/main.c | 4 +- gtk/makemeta-ui.c | 4 +- gtk/notify.c | 4 +- gtk/relocate.c | 2 +- gtk/tr-core.c | 4 +- gtk/tr-prefs.c | 6 +- gtk/util.c | 13 ++-- gtk/util.h | 2 +- libtransmission/announcer-udp.c | 2 +- libtransmission/announcer.c | 15 ++--- libtransmission/bandwidth.c | 2 +- libtransmission/cache.c | 4 +- libtransmission/clients.c | 4 +- libtransmission/crypto-utils-openssl.c | 2 +- libtransmission/crypto.c | 2 +- libtransmission/fdlimit.c | 12 ++-- libtransmission/file-posix.c | 22 +++--- libtransmission/handshake.c | 2 +- libtransmission/log.c | 21 +++--- libtransmission/natpmp.c | 1 - libtransmission/net.c | 12 ++-- libtransmission/peer-io.c | 8 +-- libtransmission/peer-mgr.c | 8 +-- libtransmission/peer-mgr.h | 3 +- libtransmission/peer-msgs.c | 26 +++---- libtransmission/platform.c | 8 +-- libtransmission/quark.c | 23 +++---- libtransmission/resume.c | 14 ++-- libtransmission/rpc-server.c | 10 +-- libtransmission/rpcimpl.c | 47 +++++++------ libtransmission/session.c | 4 +- libtransmission/subprocess-posix.c | 8 +-- libtransmission/torrent.c | 35 +++++----- libtransmission/tr-lpd.c | 8 +-- libtransmission/tr-udp.c | 14 ++-- libtransmission/utils.c | 11 +-- libtransmission/variant-benc.c | 12 ++-- libtransmission/variant.c | 86 ++++++++++++------------ libtransmission/watchdir-generic.c | 6 +- libtransmission/watchdir-inotify.c | 8 +-- libtransmission/watchdir.c | 2 +- qt/FileTreeView.h | 1 - qt/FilterBar.cc | 2 +- qt/FilterBarComboBox.h | 1 - qt/Filters.h | 2 - qt/FreeSpaceLabel.h | 2 +- qt/MainWindow.cc | 5 +- qt/MainWindow.h | 35 +++++----- qt/MakeDialog.h | 5 +- qt/OptionsDialog.h | 16 ++--- qt/PathButton.h | 1 - qt/PrefsDialog.h | 36 +++++----- qt/RelocateDialog.h | 5 +- qt/Session.h | 7 +- qt/Speed.h | 1 - qt/TorrentModel.cc | 5 +- qt/TrackerModel.h | 2 - qt/WatchDir.h | 14 ++-- 62 files changed, 355 insertions(+), 414 deletions(-) diff --git a/daemon/daemon.c b/daemon/daemon.c index 6dadf6ad8..5ee3b9cb4 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -204,7 +204,7 @@ static char const* getConfigDir(int argc, char const* const* argv) static tr_watchdir_status onFileAdded(tr_watchdir_t dir, char const* name, void* context) { - tr_session* session = context; + tr_session const* session = context; if (!tr_str_has_suffix(name, ".torrent")) { @@ -715,7 +715,7 @@ static int daemon_start(void* raw_arg, bool foreground) if ((watchdir = tr_watchdir_new(dir, &onFileAdded, mySession, ev_base, force_generic)) == NULL) { - goto cleanup; + goto CLEANUP; } } } @@ -752,13 +752,13 @@ static int daemon_start(void* raw_arg, bool foreground) if (status_ev == NULL) { tr_logAddError("Failed to create status event %s", tr_strerror(errno)); - goto cleanup; + goto CLEANUP; } if (event_add(status_ev, &one_sec) == -1) { tr_logAddError("Failed to add status event %s", tr_strerror(errno)); - goto cleanup; + goto CLEANUP; } } @@ -768,10 +768,10 @@ static int daemon_start(void* raw_arg, bool foreground) if (event_base_dispatch(ev_base) == -1) { tr_logAddError("Failed to launch daemon event loop: %s", tr_strerror(errno)); - goto cleanup; + goto CLEANUP; } -cleanup: +CLEANUP: sd_notify(0, "STATUS=Closing transmission session...\n"); printf("Closing transmission session..."); @@ -828,7 +828,7 @@ static bool init_daemon_data(int argc, char* argv[], struct daemon_data* data, b /* overwrite settings from the command line */ if (!parse_args(argc, (char const**)argv, &data->settings, &data->paused, &dumpSettings, foreground, ret)) { - goto exit_early; + goto EXIT_EARLY; } if (*foreground && logfile == TR_BAD_SYS_FILE) @@ -840,7 +840,7 @@ static bool init_daemon_data(int argc, char* argv[], struct daemon_data* data, b { printMessage(logfile, TR_LOG_ERROR, MY_NAME, "Error loading config file -- exiting.", __FILE__, __LINE__); *ret = 1; - goto exit_early; + goto EXIT_EARLY; } if (dumpSettings) @@ -848,12 +848,12 @@ static bool init_daemon_data(int argc, char* argv[], struct daemon_data* data, b char* str = tr_variantToStr(&data->settings, TR_VARIANT_FMT_JSON, NULL); fprintf(stderr, "%s", str); tr_free(str); - goto exit_early; + goto EXIT_EARLY; } return true; -exit_early: +EXIT_EARLY: tr_variantFree(&data->settings); return false; } diff --git a/gtk/details.c b/gtk/details.c index 6cdba06f3..883d5b6ff 100644 --- a/gtk/details.c +++ b/gtk/details.c @@ -358,14 +358,12 @@ static void refreshOptions(struct DetailsImpl* di, tr_torrent** torrents, int n) static void torrent_set_bool(struct DetailsImpl* di, tr_quark const key, gboolean value) { tr_variant top; - tr_variant* args; - tr_variant* ids; tr_variantInitDict(&top, 2); tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set"); - args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2); + tr_variant* const args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2); tr_variantDictAddBool(args, key, value); - ids = tr_variantDictAddList(args, TR_KEY_ids, g_slist_length(di->ids)); + tr_variant* const ids = tr_variantDictAddList(args, TR_KEY_ids, g_slist_length(di->ids)); for (GSList* l = di->ids; l != NULL; l = l->next) { @@ -379,14 +377,12 @@ static void torrent_set_bool(struct DetailsImpl* di, tr_quark const key, gboolea static void torrent_set_int(struct DetailsImpl* di, tr_quark const key, int value) { tr_variant top; - tr_variant* args; - tr_variant* ids; tr_variantInitDict(&top, 2); tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set"); - args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2); + tr_variant* const args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2); tr_variantDictAddInt(args, key, value); - ids = tr_variantDictAddList(args, TR_KEY_ids, g_slist_length(di->ids)); + tr_variant* const ids = tr_variantDictAddList(args, TR_KEY_ids, g_slist_length(di->ids)); for (GSList* l = di->ids; l != NULL; l = l->next) { @@ -400,14 +396,12 @@ static void torrent_set_int(struct DetailsImpl* di, tr_quark const key, int valu static void torrent_set_real(struct DetailsImpl* di, tr_quark const key, double value) { tr_variant top; - tr_variant* args; - tr_variant* ids; tr_variantInitDict(&top, 2); tr_variantDictAddStr(&top, TR_KEY_method, "torrent-set"); - args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2); + tr_variant* const args = tr_variantDictAddDict(&top, TR_KEY_arguments, 2); tr_variantDictAddReal(args, key, value); - ids = tr_variantDictAddList(args, TR_KEY_ids, g_slist_length(di->ids)); + tr_variant* const ids = tr_variantDictAddList(args, TR_KEY_ids, g_slist_length(di->ids)); for (GSList* l = di->ids; l != NULL; l = l->next) { @@ -455,7 +449,7 @@ static void ratio_spun_cb(GtkSpinButton* s, struct DetailsImpl* di) static void max_peers_spun_cb(GtkSpinButton* s, struct DetailsImpl* di) { - torrent_set_int(di, TR_KEY_peer_limit, gtk_spin_button_get_value(s)); + torrent_set_int(di, TR_KEY_peer_limit, gtk_spin_button_get_value_as_int(s)); } static void onPriorityChanged(GtkComboBox* combo_box, struct DetailsImpl* di) @@ -623,17 +617,15 @@ static char const* activityString(int activity, bool finished) * This way if the user has text selected, refreshing won't deselect it */ static void gtr_text_buffer_set_text(GtkTextBuffer* b, char const* str) { - char* old_str; - GtkTextIter start; - GtkTextIter end; - if (str == NULL) { str = ""; } + GtkTextIter start; + GtkTextIter end; gtk_text_buffer_get_bounds(b, &start, &end); - old_str = gtk_text_buffer_get_text(b, &start, &end, FALSE); + char* old_str = gtk_text_buffer_get_text(b, &start, &end, FALSE); if (old_str == NULL || g_strcmp0(old_str, str) != 0) { @@ -1109,7 +1101,7 @@ static void refreshInfo(struct DetailsImpl* di, tr_torrent** torrents, int n) } else { - int const period = time(NULL) - latest; + time_t const period = time(NULL) - latest; if (period < 5) { @@ -1497,16 +1489,13 @@ static void refreshPeerRow(GtkListStore* store, GtkTreeIter* iter, tr_peer_stat static void refreshPeerList(struct DetailsImpl* di, tr_torrent** torrents, int n) { - int* peerCount; GtkTreeIter iter; - GtkTreeModel* model; GHashTable* hash = di->peer_hash; GtkListStore* store = di->peer_store; - struct tr_peer_stat** peers; /* step 1: get all the peers */ - peers = g_new(struct tr_peer_stat*, n); - peerCount = g_new(int, n); + struct tr_peer_stat** peers = g_new(struct tr_peer_stat*, n); + int* peerCount = g_new(int, n); for (int i = 0; i < n; ++i) { @@ -1514,7 +1503,7 @@ static void refreshPeerList(struct DetailsImpl* di, tr_torrent** torrents, int n } /* step 2: mark all the peers in the list as not-updated */ - model = GTK_TREE_MODEL(store); + GtkTreeModel* const model = GTK_TREE_MODEL(store); if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0)) { @@ -1571,8 +1560,6 @@ static void refreshPeerList(struct DetailsImpl* di, tr_torrent** torrents, int n } /* step 5: remove peers that have disappeared */ - model = GTK_TREE_MODEL(store); - if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0)) { gboolean more = TRUE; @@ -1657,7 +1644,7 @@ static void refreshWebseedList(struct DetailsImpl* di, tr_torrent** torrents, in /* step 3: update the webseeds */ for (int i = 0; i < n; ++i) { - tr_torrent* tor = torrents[i]; + tr_torrent const* tor = torrents[i]; tr_info const* inf = tr_torrentInfo(tor); double* speeds_KBps = tr_torrentWebSpeeds_KBps(tor); @@ -1665,13 +1652,11 @@ static void refreshWebseedList(struct DetailsImpl* di, tr_torrent** torrents, in { char buf[128]; char key[256]; - GtkTreePath* p; - GtkTreeRowReference* ref; char const* url = inf->webseeds[j]; g_snprintf(key, sizeof(key), "%d.%s", tr_torrentId(tor), url); - ref = g_hash_table_lookup(hash, key); - p = gtk_tree_row_reference_get_path(ref); + GtkTreeRowReference* const ref = g_hash_table_lookup(hash, key); + GtkTreePath* const p = gtk_tree_row_reference_get_path(ref); gtk_tree_model_get_iter(model, &iter, p); if (speeds_KBps[j] > 0) @@ -1747,7 +1732,6 @@ static gboolean onPeerViewQueryTooltip(GtkWidget* widget, gint x, gint y, gboole { char* name = NULL; char* addr = NULL; - char* markup = NULL; char* flagstr = NULL; struct DetailsImpl* di = gdi; GString* gstr = di->gstr; @@ -1759,7 +1743,7 @@ static gboolean onPeerViewQueryTooltip(GtkWidget* widget, gint x, gint y, gboole -1); g_string_truncate(gstr, 0); - markup = g_markup_escape_text(name, -1); + char* const markup = g_markup_escape_text(name, -1); g_string_append_printf(gstr, "%s\n%s\n \n", markup, addr); g_free(markup); @@ -2308,8 +2292,8 @@ static void favicon_ready_cb(gpointer pixbuf, gpointer vreference) if (pixbuf != NULL) { - GtkTreePath* path = gtk_tree_row_reference_get_path(reference); - GtkTreeModel* model = gtk_tree_row_reference_get_model(reference); + GtkTreePath* const path = gtk_tree_row_reference_get_path(reference); + GtkTreeModel* const model = gtk_tree_row_reference_get_model(reference); if (gtk_tree_model_get_iter(model, &iter, path)) { @@ -2325,10 +2309,7 @@ static void favicon_ready_cb(gpointer pixbuf, gpointer vreference) static void refreshTracker(struct DetailsImpl* di, tr_torrent** torrents, int n) { - int* statCount; - tr_tracker_stat** stats; GtkTreeIter iter; - GtkTreeModel* model; GString* gstr = di->gstr; /* buffer for temporary strings */ GHashTable* hash = di->tracker_hash; GtkListStore* store = di->tracker_store; @@ -2336,8 +2317,8 @@ static void refreshTracker(struct DetailsImpl* di, tr_torrent** torrents, int n) gboolean const showScrape = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(di->scrape_check)); /* step 1: get all the trackers */ - statCount = g_new0(int, n); - stats = g_new0(tr_tracker_stat*, n); + int* const statCount = g_new0(int, n); + tr_tracker_stat** const stats = g_new0(tr_tracker_stat*, n); for (int i = 0; i < n; ++i) { @@ -2345,7 +2326,7 @@ static void refreshTracker(struct DetailsImpl* di, tr_torrent** torrents, int n) } /* step 2: mark all the trackers in the list as not-updated */ - model = GTK_TREE_MODEL(store); + GtkTreeModel* const model = GTK_TREE_MODEL(store); if (gtk_tree_model_iter_nth_child(model, &iter, NULL, 0)) { @@ -2496,16 +2477,12 @@ static void on_edit_trackers_response(GtkDialog* dialog, int response, gpointer if (tor != NULL) { - tr_tracker_info* trackers; - char** tracker_strings; - char* tracker_text; - /* build the array of trackers */ gtk_text_buffer_get_bounds(text_buffer, &start, &end); - tracker_text = gtk_text_buffer_get_text(text_buffer, &start, &end, FALSE); - tracker_strings = g_strsplit(tracker_text, "\n", 0); + char* const tracker_text = gtk_text_buffer_get_text(text_buffer, &start, &end, FALSE); + char** const tracker_strings = g_strsplit(tracker_text, "\n", 0); - trackers = g_new0(tr_tracker_info, g_strv_length(tracker_strings)); + tr_tracker_info* const trackers = g_new0(tr_tracker_info, g_strv_length(tracker_strings)); n = 0; tier = 0; @@ -2532,9 +2509,9 @@ static void on_edit_trackers_response(GtkDialog* dialog, int response, gpointer } else { - GtkWidget* w; char const* text = _("List contains invalid URLs"); - w = gtk_message_dialog_new(GTK_WINDOW(dialog), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", + GtkWidget* w = gtk_message_dialog_new(GTK_WINDOW( + dialog), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", text); gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(w), "%s", _("Please correct the errors and try again.")); @@ -2583,7 +2560,7 @@ static void get_editable_tracker_list(GString* gstr, tr_torrent const* tor) static void on_edit_trackers(GtkButton* button, gpointer data) { struct DetailsImpl* di = data; - tr_torrent* tor = tracker_list_get_current_torrent(di); + tr_torrent const* tor = tracker_list_get_current_torrent(di); if (tor != NULL) { @@ -2642,7 +2619,7 @@ static void on_tracker_list_selection_changed(GtkTreeSelection* sel, gpointer gd { struct DetailsImpl* di = gdi; int const n = gtk_tree_selection_count_selected_rows(sel); - tr_torrent* tor = tracker_list_get_current_torrent(di); + tr_torrent const* tor = tracker_list_get_current_torrent(di); gtk_widget_set_sensitive(di->remove_tracker_button, n > 0); gtk_widget_set_sensitive(di->add_tracker_button, tor != NULL); @@ -2697,12 +2674,12 @@ static void on_add_tracker_response(GtkDialog* dialog, int response, gpointer gd } } -static void on_tracker_list_add_button_clicked(GtkButton* button, gpointer gdi) +static void on_tracker_list_add_button_clicked(GtkButton const* button, gpointer gdi) { TR_UNUSED(button); struct DetailsImpl* di = gdi; - tr_torrent* tor = tracker_list_get_current_torrent(di); + tr_torrent const* tor = tracker_list_get_current_torrent(di); if (tor != NULL) { @@ -2734,7 +2711,7 @@ static void on_tracker_list_add_button_clicked(GtkButton* button, gpointer gdi) } } -static void on_tracker_list_remove_button_clicked(GtkButton* button, gpointer gdi) +static void on_tracker_list_remove_button_clicked(GtkButton const* button, gpointer gdi) { TR_UNUSED(button); @@ -2903,7 +2880,7 @@ static gboolean periodic_refresh(gpointer data) return G_SOURCE_CONTINUE; } -static void on_details_window_size_allocated(GtkWidget* gtk_window, GtkAllocation* alloc, gpointer gdata) +static void on_details_window_size_allocated(GtkWidget* gtk_window, GtkAllocation const* alloc, gconstpointer gdata) { TR_UNUSED(alloc); TR_UNUSED(gdata); @@ -3010,7 +2987,7 @@ void gtr_torrent_details_dialog_set_torrents(GtkWidget* w, GSList* ids) if (len == 1) { int const id = GPOINTER_TO_INT(ids->data); - tr_torrent* tor = gtr_core_find_torrent(di->core, id); + tr_torrent const* tor = gtr_core_find_torrent(di->core, id); tr_info const* inf = tr_torrentInfo(tor); g_snprintf(title, sizeof(title), _("%s Properties"), inf->name); diff --git a/gtk/file-list.c b/gtk/file-list.c index 2140b5c28..673c0ff77 100644 --- a/gtk/file-list.c +++ b/gtk/file-list.c @@ -116,7 +116,7 @@ static gboolean refreshFilesForeach(GtkTreeModel* model, GtkTreePath* path, GtkT if (is_file) { - tr_torrent* tor = refresh_data->tor; + tr_torrent const* tor = refresh_data->tor; tr_info const* inf = tr_torrentInfo(tor); int const enabled = inf->files[index].dnd ? 0 : 1; int const priority = inf->files[index].priority; @@ -648,9 +648,8 @@ static void renderPriority(GtkTreeViewColumn* column, GtkCellRenderer* renderer, } /* build a filename from tr_torrentGetCurrentDir() + the model's FC_LABELs */ -static char* buildFilename(tr_torrent* tor, GtkTreeModel* model, GtkTreePath* path, GtkTreeIter* iter) +static char* buildFilename(tr_torrent const* tor, GtkTreeModel* model, GtkTreePath* path, GtkTreeIter const* iter) { - char* ret; GtkTreeIter child; GtkTreeIter parent = *iter; int n = gtk_tree_path_get_depth(path); @@ -664,7 +663,7 @@ static char* buildFilename(tr_torrent* tor, GtkTreeModel* model, GtkTreePath* pa } while (gtk_tree_model_iter_parent(model, &parent, &child)); - ret = g_build_filenamev(tokens); + char* const ret = g_build_filenamev(tokens); g_strfreev(tokens); return ret; } @@ -675,7 +674,7 @@ static gboolean onRowActivated(GtkTreeView* view, GtkTreePath* path, GtkTreeView gboolean handled = FALSE; FileData* data = gdata; - tr_torrent* tor = gtr_core_find_torrent(data->core, data->torrentId); + tr_torrent const* tor = gtr_core_find_torrent(data->core, data->torrentId); if (tor != NULL) { @@ -776,7 +775,8 @@ static gboolean onViewPathToggled(GtkTreeView* view, GtkTreeViewColumn* col, Gtk /** * @note 'col' and 'path' are assumed not to be NULL. */ -static gboolean getAndSelectEventPath(GtkTreeView* treeview, GdkEventButton* event, GtkTreeViewColumn** col, GtkTreePath** path) +static gboolean getAndSelectEventPath(GtkTreeView* treeview, GdkEventButton const* event, GtkTreeViewColumn** col, + GtkTreePath** path) { GtkTreeSelection* sel; @@ -796,7 +796,7 @@ static gboolean getAndSelectEventPath(GtkTreeView* treeview, GdkEventButton* eve return FALSE; } -static gboolean onViewButtonPressed(GtkWidget* w, GdkEventButton* event, gpointer gdata) +static gboolean onViewButtonPressed(GtkWidget* w, GdkEventButton const* event, gpointer gdata) { GtkTreeViewColumn* col; GtkTreePath* path = NULL; @@ -865,34 +865,31 @@ static int on_rename_done_idle(struct rename_data* data) return G_SOURCE_REMOVE; } -static void on_rename_done(tr_torrent* tor G_GNUC_UNUSED, char const* oldpath G_GNUC_UNUSED, char const* newname G_GNUC_UNUSED, - int error, struct rename_data* rename_data) +static void on_rename_done(tr_torrent const* tor G_GNUC_UNUSED, char const* oldpath G_GNUC_UNUSED, + char const* newname G_GNUC_UNUSED, int error, struct rename_data* rename_data) { rename_data->error = error; gdk_threads_add_idle((GSourceFunc)on_rename_done_idle, rename_data); } -static void cell_edited_callback(GtkCellRendererText* cell G_GNUC_UNUSED, gchar* path_string, gchar* newname, FileData* data) +static void cell_edited_callback(GtkCellRendererText const* cell G_GNUC_UNUSED, gchar const* path_string, gchar const* newname, + FileData* data) { - tr_torrent* tor; - GString* oldpath; - GtkTreeIter iter; - struct rename_data* rename_data; - - tor = gtr_core_find_torrent(data->core, data->torrentId); + tr_torrent* const tor = gtr_core_find_torrent(data->core, data->torrentId); if (tor == NULL) { return; } + GtkTreeIter iter; if (!gtk_tree_model_get_iter_from_string(data->model, &iter, path_string)) { return; } /* build oldpath */ - oldpath = g_string_new(NULL); + GString* oldpath = g_string_new(NULL); for (;;) { @@ -913,7 +910,7 @@ static void cell_edited_callback(GtkCellRendererText* cell G_GNUC_UNUSED, gchar* } /* do the renaming */ - rename_data = g_new0(struct rename_data, 1); + struct rename_data* rename_data = g_new0(struct rename_data, 1); rename_data->newname = g_strdup(newname); rename_data->file_data = data; rename_data->path_string = g_strdup(path_string); diff --git a/gtk/filter.c b/gtk/filter.c index 37c23c7bb..7bc632e2d 100644 --- a/gtk/filter.c +++ b/gtk/filter.c @@ -424,7 +424,7 @@ static GtkWidget* tracker_combo_box_new(GtkTreeModel* tmodel) return c; } -static gboolean test_tracker(tr_torrent* tor, int active_tracker_type, char const* host) +static gboolean test_tracker(tr_torrent const* tor, int active_tracker_type, char const* host) { gboolean matches = TRUE; diff --git a/gtk/main.c b/gtk/main.c index cbb3c97ed..c2280af8e 100644 --- a/gtk/main.c +++ b/gtk/main.c @@ -75,7 +75,7 @@ static char const* LICENSE = struct cbdata { - char* config_dir; + char const* config_dir; gboolean start_paused; gboolean is_iconified; gboolean is_closing; @@ -634,7 +634,7 @@ int main(int argc, char** argv) /* default settings */ memset(&cbdata, 0, sizeof(struct cbdata)); - cbdata.config_dir = (char*)tr_getDefaultConfigDir(MY_CONFIG_NAME); + cbdata.config_dir = tr_getDefaultConfigDir(MY_CONFIG_NAME); /* init i18n */ setlocale(LC_ALL, ""); diff --git a/gtk/makemeta-ui.c b/gtk/makemeta-ui.c index eec0b3e30..628bde6ef 100644 --- a/gtk/makemeta-ui.c +++ b/gtk/makemeta-ui.c @@ -386,8 +386,8 @@ static char const* getDefaultSavePath(void) return g_get_user_special_dir(G_USER_DIRECTORY_DESKTOP); } -static void on_drag_data_received(GtkWidget* widget, GdkDragContext* drag_context, gint x, gint y, - GtkSelectionData* selection_data, guint info, guint time_, gpointer user_data) +static void on_drag_data_received(GtkWidget const* widget, GdkDragContext* drag_context, gint x, gint y, + GtkSelectionData const* selection_data, guint info, guint time_, gpointer user_data) { TR_UNUSED(widget); TR_UNUSED(x); diff --git a/gtk/notify.c b/gtk/notify.c index c49d90413..3383b1714 100644 --- a/gtk/notify.c +++ b/gtk/notify.c @@ -76,8 +76,8 @@ static void get_capabilities_callback(GObject* source, GAsyncResult* res, gpoint g_variant_unref(result); } -static void g_signal_callback(GDBusProxy* dbus_proxy, char* sender_name, char* signal_name, GVariant* params, - gpointer user_data) +static void g_signal_callback(GDBusProxy const* dbus_proxy, char const* sender_name, char const* signal_name, GVariant* params, + gconstpointer user_data) { TR_UNUSED(dbus_proxy); TR_UNUSED(sender_name); diff --git a/gtk/relocate.c b/gtk/relocate.c index 1f45c3dbc..a494590da 100644 --- a/gtk/relocate.c +++ b/gtk/relocate.c @@ -92,7 +92,7 @@ static gboolean onTimer(gpointer gdata) return G_SOURCE_CONTINUE; } -static void onResponse(GtkDialog* dialog, int response, gpointer user_data) +static void onResponse(GtkDialog* dialog, int response, gconstpointer user_data) { TR_UNUSED(user_data); diff --git a/gtk/tr-core.c b/gtk/tr-core.c index b416000df..f209b25aa 100644 --- a/gtk/tr-core.c +++ b/gtk/tr-core.c @@ -801,8 +801,8 @@ static void core_watchdir_monitor_file(TrCore* core, GFile* file) } /* GFileMonitor noticed a file was created */ -static void on_file_changed_in_watchdir(GFileMonitor* monitor, GFile* file, GFile* other_type, GFileMonitorEvent event_type, - gpointer core) +static void on_file_changed_in_watchdir(GFileMonitor const* monitor, GFile* file, GFile const* other_type, + GFileMonitorEvent event_type, gpointer core) { TR_UNUSED(monitor); TR_UNUSED(other_type); diff --git a/gtk/tr-prefs.c b/gtk/tr-prefs.c index 2f57da596..0eadee1bb 100644 --- a/gtk/tr-prefs.c +++ b/gtk/tr-prefs.c @@ -636,7 +636,7 @@ static void refreshWhitelist(struct remote_page* page) g_string_free(gstr, TRUE); } -static void onAddressEdited(GtkCellRendererText* r, gchar* path_string, gchar* address, gpointer gpage) +static void onAddressEdited(GtkCellRendererText const* r, gchar const* path_string, gchar* address, gpointer gpage) { TR_UNUSED(r); @@ -654,7 +654,7 @@ static void onAddressEdited(GtkCellRendererText* r, gchar* path_string, gchar* a refreshWhitelist(page); } -static void onAddWhitelistClicked(GtkButton* b, gpointer gpage) +static void onAddWhitelistClicked(GtkButton const* b, gpointer gpage) { TR_UNUSED(b); @@ -670,7 +670,7 @@ static void onAddWhitelistClicked(GtkButton* b, gpointer gpage) gtk_tree_path_free(path); } -static void onRemoveWhitelistClicked(GtkButton* b, gpointer gpage) +static void onRemoveWhitelistClicked(GtkButton const* b, gpointer gpage) { TR_UNUSED(b); diff --git a/gtk/util.c b/gtk/util.c index 24f5f8287..aed918dda 100644 --- a/gtk/util.c +++ b/gtk/util.c @@ -99,11 +99,8 @@ char* tr_strlsize(char* buf, guint64 bytes, size_t buflen) return buf; } -char* tr_strltime(char* buf, int seconds, size_t buflen) +char* tr_strltime(char* buf, time_t seconds, size_t buflen) { - int days; - int hours; - int minutes; char d[128]; char h[128]; char m[128]; @@ -114,15 +111,15 @@ char* tr_strltime(char* buf, int seconds, size_t buflen) seconds = 0; } - days = seconds / 86400; - hours = (seconds % 86400) / 3600; - minutes = (seconds % 3600) / 60; + int const days = (int)(seconds / 86400); + int const hours = (seconds % 86400) / 3600; + int const minutes = (seconds % 3600) / 60; seconds = (seconds % 3600) % 60; g_snprintf(d, sizeof(d), ngettext("%'d day", "%'d days", days), days); g_snprintf(h, sizeof(h), ngettext("%'d hour", "%'d hours", hours), hours); g_snprintf(m, sizeof(m), ngettext("%'d minute", "%'d minutes", minutes), minutes); - g_snprintf(s, sizeof(s), ngettext("%'d second", "%'d seconds", seconds), seconds); + g_snprintf(s, sizeof(s), ngettext("%'d second", "%'d seconds", (int)seconds), (int)seconds); if (days != 0) { diff --git a/gtk/util.h b/gtk/util.h index 3b0b5ce94..d943f5631 100644 --- a/gtk/util.h +++ b/gtk/util.h @@ -73,7 +73,7 @@ char* tr_strlsize(char* buf, guint64 size, size_t buflen); char* tr_strlratio(char* buf, double ratio, size_t buflen); /* return a human-readable string for the time given in seconds. */ -char* tr_strltime(char* buf, int secs, size_t buflen); +char* tr_strltime(char* buf, time_t secs, size_t buflen); /*** **** diff --git a/libtransmission/announcer-udp.c b/libtransmission/announcer-udp.c index 4781a1fbd..d4506d9a9 100644 --- a/libtransmission/announcer-udp.c +++ b/libtransmission/announcer-udp.c @@ -45,7 +45,7 @@ static void tau_sockaddr_setport(struct sockaddr* sa, tr_port port) } } -static int tau_sendto(tr_session* session, struct evutil_addrinfo* ai, tr_port port, void const* buf, size_t buflen) +static int tau_sendto(tr_session const* session, struct evutil_addrinfo* ai, tr_port port, void const* buf, size_t buflen) { tr_socket_t sockfd; diff --git a/libtransmission/announcer.c b/libtransmission/announcer.c index 95c0ab287..43cce46ad 100644 --- a/libtransmission/announcer.c +++ b/libtransmission/announcer.c @@ -548,7 +548,7 @@ static void publishError(tr_tier* tier, char const* msg) publishMessage(tier, msg, TR_TRACKER_ERROR); } -static int8_t getSeedProbability(tr_tier* tier, int seeds, int leechers, int pex_count) +static int8_t getSeedProbability(tr_tier const* tier, int seeds, int leechers, int pex_count) { /* special case optimization: ocelot omits seeds from peer lists sent to seeds on private trackers. @@ -613,7 +613,7 @@ static int filter_trackers_compare_func(void const* va, void const* vb) /** * Massages the incoming list of trackers into something we can use. */ -static tr_tracker_info* filter_trackers(tr_tracker_info* input, int input_count, int* setme_count) +static tr_tracker_info* filter_trackers(tr_tracker_info const* input, int input_count, int* setme_count) { int n = 0; struct tr_tracker_info* ret; @@ -1159,7 +1159,6 @@ static void on_announce_done(tr_announce_response const* response, void* vdata) int scrape_fields = 0; int seeders = 0; int leechers = 0; - int downloads = 0; bool const isStopped = event == TR_ANNOUNCE_EVENT_STOPPED; publishErrorClear(tier); @@ -1182,7 +1181,7 @@ static void on_announce_done(tr_announce_response const* response, void* vdata) if (response->downloads >= 0) { - tracker->downloadCount = downloads = response->downloads; + tracker->downloadCount = response->downloads; ++scrape_fields; } @@ -1363,7 +1362,7 @@ static bool multiscrape_too_big(char const* errmsg) return false; } -static void on_scrape_error(tr_session* session, tr_tier* tier, char const* errmsg) +static void on_scrape_error(tr_session const* session, tr_tier* tier, char const* errmsg) { int interval; @@ -1644,8 +1643,8 @@ static bool tierNeedsToScrape(tr_tier const* tier, time_t const now) static int compareTiers(void const* va, void const* vb) { int ret; - tr_tier const* a = *(tr_tier const**)va; - tr_tier const* b = *(tr_tier const**)vb; + tr_tier const* a = *(tr_tier const* const*)va; + tr_tier const* b = *(tr_tier const* const*)vb; /* primary key: larger stats come before smaller */ ret = compareTransfer(a->byteCounts[TR_ANN_UP], a->byteCounts[TR_ANN_DOWN], b->byteCounts[TR_ANN_UP], @@ -1921,7 +1920,7 @@ static void copy_tier_attributes(struct tr_torrent_tiers* tt, tr_tier const* src { for (int j = 0; !found && j < tt->tiers[i].tracker_count; ++j) { - if ((tr_strcmp0(src->currentTracker->announce, tt->tiers[i].trackers[j].announce) == 0)) + if (tr_strcmp0(src->currentTracker->announce, tt->tiers[i].trackers[j].announce) == 0) { found = true; copy_tier_attributes_impl(&tt->tiers[i], j, src); diff --git a/libtransmission/bandwidth.c b/libtransmission/bandwidth.c index 98d69c373..48f6cb614 100644 --- a/libtransmission/bandwidth.c +++ b/libtransmission/bandwidth.c @@ -183,7 +183,7 @@ static void allocateBandwidth(tr_bandwidth* b, tr_priority_t parent_priority, tr } } -static void phaseOne(tr_ptrArray* peerArray, tr_direction dir) +static void phaseOne(tr_ptrArray const* peerArray, tr_direction dir) { int n; int peerCount = tr_ptrArraySize(peerArray); diff --git a/libtransmission/cache.c b/libtransmission/cache.c index 66bbac0ee..f15e4e432 100644 --- a/libtransmission/cache.c +++ b/libtransmission/cache.c @@ -125,7 +125,7 @@ enum * - Stale runs, runs sitting in cache for a long time or runs not growing, get priority. * Returns number of runs. */ -static int calcRuns(tr_cache* cache, struct run_info* runs) +static int calcRuns(tr_cache const* cache, struct run_info* runs) { int const n = tr_ptrArraySize(&cache->blocks); int i = 0; @@ -376,7 +376,7 @@ int tr_cachePrefetchBlock(tr_cache* cache, tr_torrent* torrent, tr_piece_index_t **** ***/ -static int findBlockPos(tr_cache* cache, tr_torrent* torrent, tr_piece_index_t block) +static int findBlockPos(tr_cache const* cache, tr_torrent* torrent, tr_piece_index_t block) { struct cache_block key; key.tor = torrent; diff --git a/libtransmission/clients.c b/libtransmission/clients.c index f9cf568f6..e06d0a8fc 100644 --- a/libtransmission/clients.c +++ b/libtransmission/clients.c @@ -138,7 +138,7 @@ static bool isMainlineStyle(uint8_t const* peer_id) static bool decodeBitCometClient(char* buf, size_t buflen, uint8_t const* id) { - char const* chid = (char*)id; + char const* chid = (char const*)id; bool is_bitlord; int major; int minor; @@ -186,7 +186,7 @@ static bool decodeBitCometClient(char* buf, size_t buflen, uint8_t const* id) char* tr_clientForId(char* buf, size_t buflen, void const* id_in) { uint8_t const* id = id_in; - char const* chid = (char*)id; + char const* chid = (char const*)id; *buf = '\0'; diff --git a/libtransmission/crypto-utils-openssl.c b/libtransmission/crypto-utils-openssl.c index ea58af44d..78ffd377b 100644 --- a/libtransmission/crypto-utils-openssl.c +++ b/libtransmission/crypto-utils-openssl.c @@ -83,7 +83,7 @@ static bool check_openssl_result(int result, int expected_result, bool expected_ #define check_result(result) check_openssl_result((result), 1, true, __FILE__, __LINE__) #define check_result_neq(result, x_result) check_openssl_result((result), (x_result), false, __FILE__, __LINE__) -static bool check_openssl_pointer(void* pointer, char const* file, int line) +static bool check_openssl_pointer(void const* pointer, char const* file, int line) { bool const ret = pointer != NULL; diff --git a/libtransmission/crypto.c b/libtransmission/crypto.c index e64b998df..231bd4d8a 100644 --- a/libtransmission/crypto.c +++ b/libtransmission/crypto.c @@ -90,7 +90,7 @@ uint8_t const* tr_cryptoGetMyPublicKey(tr_crypto const* crypto, int* setme_len) *** **/ -static void initRC4(tr_crypto* crypto, tr_rc4_ctx_t* setme, char const* key) +static void initRC4(tr_crypto const* crypto, tr_rc4_ctx_t* setme, char const* key) { TR_ASSERT(crypto->torrentHashIsSet); diff --git a/libtransmission/fdlimit.c b/libtransmission/fdlimit.c index 2da91a536..21521e54d 100644 --- a/libtransmission/fdlimit.c +++ b/libtransmission/fdlimit.c @@ -164,14 +164,14 @@ static int cached_file_open(struct tr_cached_file* o, char const* filename, bool if (dir == NULL) { tr_logAddError(_("Couldn't get directory for \"%1$s\": %2$s"), filename, error->message); - goto fail; + goto FAIL; } if (!tr_sys_dir_create(dir, TR_SYS_DIR_CREATE_PARENTS, 0777, &error)) { tr_logAddError(_("Couldn't create \"%1$s\": %2$s"), dir, error->message); tr_free(dir); - goto fail; + goto FAIL; } tr_free(dir); @@ -191,7 +191,7 @@ static int cached_file_open(struct tr_cached_file* o, char const* filename, bool if (fd == TR_BAD_SYS_FILE) { tr_logAddError(_("Couldn't open \"%1$s\": %2$s"), filename, error->message); - goto fail; + goto FAIL; } if (writable && !already_existed && allocation != TR_PREALLOCATE_NONE) @@ -216,7 +216,7 @@ static int cached_file_open(struct tr_cached_file* o, char const* filename, bool { tr_logAddError(_("Couldn't preallocate file \"%1$s\" (%2$s, size: %3$" PRIu64 "): %4$s"), filename, type, file_size, error->message); - goto fail; + goto FAIL; } tr_logAddDebug(_("Preallocated file \"%1$s\" (%2$s, size: %3$" PRIu64 ")"), filename, type, file_size); @@ -231,13 +231,13 @@ static int cached_file_open(struct tr_cached_file* o, char const* filename, bool if (resize_needed && !tr_sys_file_truncate(fd, file_size, &error)) { tr_logAddError(_("Couldn't truncate \"%1$s\": %2$s"), filename, error->message); - goto fail; + goto FAIL; } o->fd = fd; return 0; -fail: +FAIL: { int const err = error->code; tr_error_free(error); diff --git a/libtransmission/file-posix.c b/libtransmission/file-posix.c index 6e22a550d..59856e93a 100644 --- a/libtransmission/file-posix.c +++ b/libtransmission/file-posix.c @@ -202,19 +202,19 @@ static bool create_path(char const* path_in, int permissions, tr_error** error) break; } - goto failure; + goto FAILURE; } if (errno != ENOENT) { set_system_error(&my_error, errno); - goto failure; + goto FAILURE; } } if (ret && pp == path_end) { - goto cleanup; + goto CLEANUP; } /* Go one level down on each iteration and attempt to create */ @@ -232,10 +232,10 @@ static bool create_path(char const* path_in, int permissions, tr_error** error) if (ret) { - goto cleanup; + goto CLEANUP; } -failure: +FAILURE: TR_ASSERT(!ret); TR_ASSERT(my_error != NULL); @@ -243,7 +243,7 @@ failure: tr_logAddError(_("Couldn't create \"%1$s\": %2$s"), path, my_error->message); tr_error_propagate(error, &my_error); -cleanup: +CLEANUP: TR_ASSERT(my_error == NULL); @@ -844,7 +844,7 @@ bool tr_sys_file_preallocate(tr_sys_file_t handle, uint64_t size, int flags, tr_ if (ret || errno == ENOSPC) { - goto out; + goto OUT; } #endif @@ -874,7 +874,7 @@ bool tr_sys_file_preallocate(tr_sys_file_t handle, uint64_t size, int flags, tr_ if (ret || code == ENOSPC) { - goto non_sparse_out; + goto NON_SPARSE_OUT; } } @@ -902,7 +902,7 @@ bool tr_sys_file_preallocate(tr_sys_file_t handle, uint64_t size, int flags, tr_ if (ret || code == ENOSPC) { - goto non_sparse_out; + goto NON_SPARSE_OUT; } } @@ -916,13 +916,13 @@ bool tr_sys_file_preallocate(tr_sys_file_t handle, uint64_t size, int flags, tr_ #endif #if defined(HAVE_XFS_XFS_H) || defined(__APPLE__) -non_sparse_out: +NON_SPARSE_OUT: #endif errno = code; } #ifdef HAVE_FALLOCATE64 -out: +OUT: #endif if (!ret) diff --git a/libtransmission/handshake.c b/libtransmission/handshake.c index e298661f4..bc88f5bcd 100644 --- a/libtransmission/handshake.c +++ b/libtransmission/handshake.c @@ -883,7 +883,7 @@ static ReadState readPadC(tr_handshake* handshake, struct evbuffer* inbuf) return READ_NOW; } -static ReadState readIA(tr_handshake* handshake, struct evbuffer* inbuf) +static ReadState readIA(tr_handshake* handshake, struct evbuffer const* inbuf) { size_t const needlen = handshake->ia_len; struct evbuffer* outbuf; diff --git a/libtransmission/log.c b/libtransmission/log.c index 9809ebcb8..aa88c924f 100644 --- a/libtransmission/log.c +++ b/libtransmission/log.c @@ -135,20 +135,19 @@ void tr_logFreeQueue(tr_log_message* list) char* tr_logGetTimeStr(char* buf, size_t buflen) { - char tmp[64]; - struct tm now_tm; struct timeval tv; - time_t seconds; - int milliseconds; - tr_gettimeofday(&tv); + time_t const seconds = tv.tv_sec; + int const milliseconds = (int)(tv.tv_usec / 1000); + char msec_str[8]; + tr_snprintf(msec_str, sizeof msec_str, "%03d", milliseconds); - seconds = tv.tv_sec; + struct tm now_tm; tr_localtime_r(&seconds, &now_tm); - strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S.%%03d", &now_tm); - milliseconds = tv.tv_usec / 1000; - tr_snprintf(buf, buflen, tmp, milliseconds); + char date_str[32]; + strftime(date_str, sizeof(date_str), "%Y-%m-%d %H:%M:%S", &now_tm); + tr_snprintf(buf, buflen, "%s.%s", date_str, msec_str); return buf; } @@ -224,7 +223,7 @@ void tr_logAddMessage(char const* file, int line, tr_log_level level, char const if (buf_len < 0) { - goto finish; + goto FINISH; } #ifdef _WIN32 @@ -298,7 +297,7 @@ void tr_logAddMessage(char const* file, int line, tr_log_level level, char const } } -finish: +FINISH: tr_lockUnlock(getMessageLock()); errno = err; } diff --git a/libtransmission/natpmp.c b/libtransmission/natpmp.c index 62abbfde8..6c2dac29a 100644 --- a/libtransmission/natpmp.c +++ b/libtransmission/natpmp.c @@ -231,7 +231,6 @@ int tr_natpmpPulse(struct tr_natpmp* nat, tr_port private_port, bool is_enabled, case TR_NATPMP_IDLE: *public_port = nat->public_port; return nat->is_mapped ? TR_PORT_MAPPED : TR_PORT_UNMAPPED; - break; case TR_NATPMP_DISCOVER: ret = TR_PORT_UNMAPPED; diff --git a/libtransmission/net.c b/libtransmission/net.c index a9bbcfd07..2be92a48a 100644 --- a/libtransmission/net.c +++ b/libtransmission/net.c @@ -229,7 +229,7 @@ bool tr_address_from_sockaddr_storage(tr_address* setme_addr, tr_port* setme_por { if (from->ss_family == AF_INET) { - struct sockaddr_in* sin = (struct sockaddr_in*)from; + struct sockaddr_in const* sin = (struct sockaddr_in const*)from; setme_addr->type = TR_AF_INET; setme_addr->addr.addr4.s_addr = sin->sin_addr.s_addr; *setme_port = sin->sin_port; @@ -238,7 +238,7 @@ bool tr_address_from_sockaddr_storage(tr_address* setme_addr, tr_port* setme_por if (from->ss_family == AF_INET6) { - struct sockaddr_in6* sin6 = (struct sockaddr_in6*)from; + struct sockaddr_in6 const* sin6 = (struct sockaddr_in6 const*)from; setme_addr->type = TR_AF_INET6; setme_addr->addr.addr6 = sin6->sin6_addr; *setme_port = sin6->sin6_port; @@ -573,7 +573,7 @@ static int get_source_address(struct sockaddr const* dst, socklen_t dst_len, str if (s == TR_BAD_SOCKET) { - goto fail; + goto FAIL; } /* Since it's a UDP socket, this doesn't actually send any packets. */ @@ -581,21 +581,21 @@ static int get_source_address(struct sockaddr const* dst, socklen_t dst_len, str if (rc == -1) { - goto fail; + goto FAIL; } rc = getsockname(s, src, src_len); if (rc == -1) { - goto fail; + goto FAIL; } evutil_closesocket(s); return rc; -fail: +FAIL: save = errno; evutil_closesocket(s); errno = save; diff --git a/libtransmission/peer-io.c b/libtransmission/peer-io.c index dc1028ae8..b9e987864 100644 --- a/libtransmission/peer-io.c +++ b/libtransmission/peer-io.c @@ -392,7 +392,7 @@ static void event_write_cb(evutil_socket_t fd, short event, void* vio) { if (e == 0 || e == EAGAIN || e == EINTR || e == EINPROGRESS) { - goto reschedule; + goto RESCHEDULE; } /* error case */ @@ -406,7 +406,7 @@ static void event_write_cb(evutil_socket_t fd, short event, void* vio) if (res <= 0) { - goto error; + goto FAIL; } if (evbuffer_get_length(io->outbuf) != 0) @@ -417,7 +417,7 @@ static void event_write_cb(evutil_socket_t fd, short event, void* vio) didWriteWrapper(io, res); return; -reschedule: +RESCHEDULE: if (evbuffer_get_length(io->outbuf) != 0) { tr_peerIoSetEnabled(io, dir, true); @@ -425,7 +425,7 @@ reschedule: return; -error: +FAIL: tr_net_strerror(errstr, sizeof(errstr), e); dbgmsg(io, "event_write_cb got an error. res is %d, what is %hd, errno is %d (%s)", res, what, e, errstr); diff --git a/libtransmission/peer-mgr.c b/libtransmission/peer-mgr.c index b5fb2db55..78eceb41c 100644 --- a/libtransmission/peer-mgr.c +++ b/libtransmission/peer-mgr.c @@ -318,12 +318,12 @@ static inline void managerUnlock(struct tr_peerMgr const* manager) tr_sessionUnlock(manager->session); } -static inline void swarmLock(tr_swarm* swarm) +static inline void swarmLock(tr_swarm const* swarm) { managerLock(swarm->manager); } -static inline void swarmUnlock(tr_swarm* swarm) +static inline void swarmUnlock(tr_swarm const* swarm) { managerUnlock(swarm->manager); } @@ -585,7 +585,7 @@ void tr_peerMgrOnBlocklistChanged(tr_peerMgr* mgr) } } -static bool isAtomBlocklisted(tr_session* session, struct peer_atom* atom) +static bool isAtomBlocklisted(tr_session const* session, struct peer_atom* atom) { if (atom->blocklisted < 0) { @@ -2355,7 +2355,7 @@ static bool isAtomInteresting(tr_torrent const* tor, struct peer_atom* atom) return true; } -int tr_peerMgrGetPeers(tr_torrent* tor, tr_pex** setme_pex, uint8_t af, uint8_t list_mode, int maxCount) +int tr_peerMgrGetPeers(tr_torrent const* tor, tr_pex** setme_pex, uint8_t af, uint8_t list_mode, int maxCount) { TR_ASSERT(tr_isTorrent(tor)); TR_ASSERT(setme_pex != NULL); diff --git a/libtransmission/peer-mgr.h b/libtransmission/peer-mgr.h index 258da2c9b..b4f3215d0 100644 --- a/libtransmission/peer-mgr.h +++ b/libtransmission/peer-mgr.h @@ -107,7 +107,8 @@ enum TR_PEERS_INTERESTING }; -int tr_peerMgrGetPeers(tr_torrent* tor, tr_pex** setme_pex, uint8_t address_type, uint8_t peer_list_mode, int max_peer_count); +int tr_peerMgrGetPeers(tr_torrent const* tor, tr_pex** setme_pex, uint8_t address_type, uint8_t peer_list_mode, + int max_peer_count); void tr_peerMgrStartTorrent(tr_torrent* tor); diff --git a/libtransmission/peer-msgs.c b/libtransmission/peer-msgs.c index 4ca382991..711c954e0 100644 --- a/libtransmission/peer-msgs.c +++ b/libtransmission/peer-msgs.c @@ -2276,10 +2276,10 @@ typedef struct } PexDiffs; -static void pexAddedCb(void* vpex, void* userData) +static void pexAddedCb(void const* vpex, void* userData) { PexDiffs* diffs = userData; - tr_pex* pex = vpex; + tr_pex const* pex = vpex; if (diffs->addedCount < MAX_PEX_ADDED) { @@ -2288,10 +2288,10 @@ static void pexAddedCb(void* vpex, void* userData) } } -static inline void pexDroppedCb(void* vpex, void* userData) +static inline void pexDroppedCb(void const* vpex, void* userData) { PexDiffs* diffs = userData; - tr_pex* pex = vpex; + tr_pex const* pex = vpex; if (diffs->droppedCount < MAX_PEX_DROPPED) { @@ -2299,15 +2299,15 @@ static inline void pexDroppedCb(void* vpex, void* userData) } } -static inline void pexElementCb(void* vpex, void* userData) +static inline void pexElementCb(void const* vpex, void* userData) { PexDiffs* diffs = userData; - tr_pex* pex = vpex; + tr_pex const* pex = vpex; diffs->elements[diffs->elementCount++] = *pex; } -typedef void (* tr_set_func)(void* element, void* userData); +typedef void (* tr_set_func)(void const* element, void* userData); /** * @brief find the differences and commonalities in two sorted sets @@ -2334,12 +2334,12 @@ static void tr_set_compare(void const* va, size_t aCount, void const* vb, size_t { if (a == aend) { - (*in_b_cb)((void*)b, userData); + (*in_b_cb)(b, userData); b += elementSize; } else if (b == bend) { - (*in_a_cb)((void*)a, userData); + (*in_a_cb)(a, userData); a += elementSize; } else @@ -2348,18 +2348,18 @@ static void tr_set_compare(void const* va, size_t aCount, void const* vb, size_t if (val == 0) { - (*in_both_cb)((void*)a, userData); + (*in_both_cb)(a, userData); a += elementSize; b += elementSize; } else if (val < 0) { - (*in_a_cb)((void*)a, userData); + (*in_a_cb)(a, userData); a += elementSize; } else if (val > 0) { - (*in_b_cb)((void*)b, userData); + (*in_b_cb)(b, userData); b += elementSize; } } @@ -2686,7 +2686,7 @@ bool tr_peerMsgsIsIncomingConnection(tr_peerMsgs const* msgs) bool tr_isPeerMsgs(void const* msgs) { - return msgs != NULL && ((struct tr_peerMsgs*)msgs)->magic_number == MAGIC_NUMBER; + return msgs != NULL && ((struct tr_peerMsgs const*)msgs)->magic_number == MAGIC_NUMBER; } tr_peerMsgs* tr_peerMsgsCast(void* vm) diff --git a/libtransmission/platform.c b/libtransmission/platform.c index 4d819fc53..2b079c924 100644 --- a/libtransmission/platform.c +++ b/libtransmission/platform.c @@ -267,15 +267,15 @@ static char const* getHomeDir(void) #else - struct passwd* pw = getpwuid(getuid()); - + struct passwd pwent; + struct passwd* pw = NULL; + char buf[4096]; + getpwuid_r(getuid(), &pwent, buf, sizeof buf, &pw); if (pw != NULL) { home = tr_strdup(pw->pw_dir); } - endpwent(); - #endif } diff --git a/libtransmission/quark.c b/libtransmission/quark.c index 8d79a3d8e..27e131d70 100644 --- a/libtransmission/quark.c +++ b/libtransmission/quark.c @@ -491,22 +491,19 @@ tr_quark tr_quark_new(void const* str, size_t len) { tr_quark ret = TR_KEY_NONE; - if (str == NULL) + if (str != NULL) { - goto finish; + if (len == TR_BAD_SIZE) + { + len = strlen(str); + } + + if (!tr_quark_lookup(str, len, &ret)) + { + ret = append_new_quark(str, len); + } } - if (len == TR_BAD_SIZE) - { - len = strlen(str); - } - - if (!tr_quark_lookup(str, len, &ret)) - { - ret = append_new_quark(str, len); - } - -finish: return ret; } diff --git a/libtransmission/resume.c b/libtransmission/resume.c index 3bf59e57b..7ce09ead7 100644 --- a/libtransmission/resume.c +++ b/libtransmission/resume.c @@ -45,7 +45,7 @@ static void savePeers(tr_variant* dict, tr_torrent const* tor) int count; tr_pex* pex; - count = tr_peerMgrGetPeers((tr_torrent*)tor, &pex, TR_AF_INET, TR_PEERS_INTERESTING, MAX_REMEMBERED_PEERS); + count = tr_peerMgrGetPeers(tor, &pex, TR_AF_INET, TR_PEERS_INTERESTING, MAX_REMEMBERED_PEERS); if (count > 0) { @@ -54,7 +54,7 @@ static void savePeers(tr_variant* dict, tr_torrent const* tor) tr_free(pex); - count = tr_peerMgrGetPeers((tr_torrent*)tor, &pex, TR_AF_INET6, TR_PEERS_INTERESTING, MAX_REMEMBERED_PEERS); + count = tr_peerMgrGetPeers(tor, &pex, TR_AF_INET6, TR_PEERS_INTERESTING, MAX_REMEMBERED_PEERS); if (count > 0) { @@ -64,12 +64,12 @@ static void savePeers(tr_variant* dict, tr_torrent const* tor) tr_free(pex); } -static int addPeers(tr_torrent* tor, uint8_t const* buf, int buflen) +static int addPeers(tr_torrent* tor, uint8_t const* buf, size_t buflen) { int numAdded = 0; - int const count = buflen / sizeof(tr_pex); + size_t const count = buflen / sizeof(tr_pex); - for (int i = 0; i < count && numAdded < MAX_REMEMBERED_PEERS; ++i) + for (size_t i = 0; i < count && numAdded < MAX_REMEMBERED_PEERS; ++i) { tr_pex pex; memcpy(&pex, buf + i * sizeof(tr_pex), sizeof(tr_pex)); @@ -113,10 +113,10 @@ static uint64_t loadPeers(tr_variant* dict, tr_torrent* tor) static void saveLabels(tr_variant* dict, tr_torrent const* tor) { - int const n = tr_ptrArraySize(&tor->labels); + size_t const n = tr_ptrArraySize(&tor->labels); tr_variant* list = tr_variantDictAddList(dict, TR_KEY_labels, n); char const* const* labels = (char const* const*)tr_ptrArrayBase(&tor->labels); - for (int i = 0; i < n; ++i) + for (size_t i = 0; i < n; ++i) { tr_variantListAddStr(list, labels[i]); } diff --git a/libtransmission/rpc-server.c b/libtransmission/rpc-server.c index 5b9819cb4..d4f6db301 100644 --- a/libtransmission/rpc-server.c +++ b/libtransmission/rpc-server.c @@ -182,7 +182,7 @@ static void handle_upload(struct evhttp_request* req, struct tr_rpc_server* serv /* first look for the session id */ for (int i = 0; i < n; ++i) { - struct tr_mimepart* p = tr_ptrArrayNth(&parts, i); + struct tr_mimepart const* p = tr_ptrArrayNth(&parts, i); if (tr_strcasestr(p->headers, TR_RPC_SESSION_ID_HEADER) != NULL) { @@ -206,13 +206,13 @@ static void handle_upload(struct evhttp_request* req, struct tr_rpc_server* serv { for (int i = 0; i < n; ++i) { - struct tr_mimepart* p = tr_ptrArrayNth(&parts, i); + struct tr_mimepart const* p = tr_ptrArrayNth(&parts, i); size_t body_len = p->body_len; tr_variant top; tr_variant* args; tr_variant test; bool have_source = false; - char* body = p->body; + char const* body = p->body; if (body_len >= 2 && memcmp(&body[body_len - 2], "\r\n", 2) == 0) { @@ -819,7 +819,7 @@ static void startServer(void* vserver) char const* address = tr_rpcGetBindAddress(server); - int const port = server->port; + tr_port const port = server->port; if (evhttp_bind_socket(httpd, address, port) == -1) { @@ -1137,7 +1137,7 @@ tr_rpc_server* tr_rpcInit(tr_session* session, tr_variant* settings) } else { - s->port = i; + s->port = (tr_port)i; } key = TR_KEY_rpc_url; diff --git a/libtransmission/rpcimpl.c b/libtransmission/rpcimpl.c index 600edbb99..1d3a126f3 100644 --- a/libtransmission/rpcimpl.c +++ b/libtransmission/rpcimpl.c @@ -11,6 +11,9 @@ #include /* strtol */ #include /* strcmp */ +#ifndef ZLIB_CONST +#define ZLIB_CONST +#endif #include #include @@ -115,11 +118,11 @@ static tr_torrent** getTorrents(tr_session* session, tr_variant* args, int* setm if (tr_variantDictFindList(args, TR_KEY_ids, &ids)) { - int const n = tr_variantListSize(ids); + size_t const n = tr_variantListSize(ids); torrents = tr_new0(tr_torrent*, n); - for (int i = 0; i < n; ++i) + for (size_t i = 0; i < n; ++i) { tr_torrent* tor; tr_variant const* const node = tr_variantListChild(ids, i); @@ -259,8 +262,8 @@ static char const* queueMoveBottom(tr_session* session, tr_variant* args_in, tr_ static int compareTorrentByQueuePosition(void const* va, void const* vb) { - tr_torrent const* a = *(tr_torrent const**)va; - tr_torrent const* b = *(tr_torrent const**)vb; + tr_torrent const* a = *(tr_torrent const* const*)va; + tr_torrent const* b = *(tr_torrent const* const*)vb; return a->queuePosition - b->queuePosition; } @@ -1037,11 +1040,11 @@ static char const* torrentGet(tr_session* session, tr_variant* args_in, tr_varia static char const* setLabels(tr_torrent* tor, tr_variant* list) { - int const n = tr_variantListSize(list); + size_t const n = tr_variantListSize(list); char const* errmsg = NULL; tr_ptrArray labels = TR_PTR_ARRAY_INIT; int labelcount = 0; - for (int i = 0; i < n; i++) + for (size_t i = 0; i < n; ++i) { char const* str; size_t str_len; @@ -1100,13 +1103,13 @@ static char const* setFilePriorities(tr_torrent* tor, int priority, tr_variant* { int64_t tmp; int fileCount = 0; - int const n = tr_variantListSize(list); + size_t const n = tr_variantListSize(list); char const* errmsg = NULL; tr_file_index_t* files = tr_new0(tr_file_index_t, tor->info.fileCount); if (n != 0) { - for (int i = 0; i < n; ++i) + for (size_t i = 0; i < n; ++i) { if (tr_variantGetInt(tr_variantListChild(list, i), &tmp)) { @@ -1142,13 +1145,13 @@ static char const* setFileDLs(tr_torrent* tor, bool do_download, tr_variant* lis { int64_t tmp; int fileCount = 0; - int const n = tr_variantListSize(list); + size_t const n = tr_variantListSize(list); char const* errmsg = NULL; tr_file_index_t* files = tr_new0(tr_file_index_t, tor->info.fileCount); if (n != 0) /* if argument list, process them */ { - for (int i = 0; i < n; ++i) + for (size_t i = 0; i < n; ++i) { if (tr_variantGetInt(tr_variantListChild(list, i), &tmp)) { @@ -1335,7 +1338,7 @@ static char const* removeTrackers(tr_torrent* tor, tr_variant* ids) if (tr_variantGetInt(val, &pos) && 0 <= pos && pos < n) { - tids[t++] = pos; + tids[t++] = (int)pos; } ++i; @@ -1471,12 +1474,12 @@ static char const* torrentSet(tr_session* session, tr_variant* args_in, tr_varia if (tr_variantDictFindInt(args_in, TR_KEY_seedIdleLimit, &tmp)) { - tr_torrentSetIdleLimit(tor, tmp); + tr_torrentSetIdleLimit(tor, (uint16_t)tmp); } if (tr_variantDictFindInt(args_in, TR_KEY_seedIdleMode, &tmp)) { - tr_torrentSetIdleMode(tor, tmp); + tr_torrentSetIdleMode(tor, (tr_idlelimit)tmp); } if (tr_variantDictFindReal(args_in, TR_KEY_seedRatioLimit, &d)) @@ -1486,12 +1489,12 @@ static char const* torrentSet(tr_session* session, tr_variant* args_in, tr_varia if (tr_variantDictFindInt(args_in, TR_KEY_seedRatioMode, &tmp)) { - tr_torrentSetRatioMode(tor, tmp); + tr_torrentSetRatioMode(tor, (tr_ratiolimit)tmp); } if (tr_variantDictFindInt(args_in, TR_KEY_queuePosition, &tmp)) { - tr_torrentSetQueuePosition(tor, tmp); + tr_torrentSetQueuePosition(tor, (int)tmp); } if (errmsg == NULL && tr_variantDictFindList(args_in, TR_KEY_trackerAdd, &tmp_variant)) @@ -1631,7 +1634,7 @@ static void portTested(tr_session* session, bool did_connect, bool did_timeout, } else /* success */ { - bool const isOpen = response_byte_count != 0 && *(char*)response == '1'; + bool const isOpen = response_byte_count != 0 && *(char const*)response == '1'; tr_variantDictAddBool(data->args_out, TR_KEY_port_is_open, isOpen); tr_snprintf(result, sizeof(result), "success"); } @@ -1689,7 +1692,7 @@ static void gotNewBlocklist(tr_session* session, bool did_connect, bool did_time stream.zalloc = (alloc_func)Z_NULL; stream.zfree = (free_func)Z_NULL; stream.opaque = (voidpf)Z_NULL; - stream.next_in = (void*)response; + stream.next_in = response; stream.avail_in = response_byte_count; inflateInit2(&stream, windowBits); @@ -1936,12 +1939,12 @@ static char const* torrentAdd(tr_session* session, tr_variant* args_in, tr_varia if (tr_variantDictFindInt(args_in, TR_KEY_peer_limit, &i)) { - tr_ctorSetPeerLimit(ctor, TR_FORCE, i); + tr_ctorSetPeerLimit(ctor, TR_FORCE, (uint16_t)i); } if (tr_variantDictFindInt(args_in, TR_KEY_bandwidthPriority, &i)) { - tr_ctorSetBandwidthPriority(ctor, i); + tr_ctorSetBandwidthPriority(ctor, (tr_priority_t)i); } if (tr_variantDictFindList(args_in, TR_KEY_files_unwanted, &l)) @@ -2120,7 +2123,7 @@ static char const* sessionSet(tr_session* session, tr_variant* args_in, tr_varia if (tr_variantDictFindInt(args_in, TR_KEY_download_queue_size, &i)) { - tr_sessionSetQueueSize(session, TR_DOWN, i); + tr_sessionSetQueueSize(session, TR_DOWN, (int)i); } if (tr_variantDictFindBool(args_in, TR_KEY_download_queue_enabled, &boolVal)) @@ -2220,7 +2223,7 @@ static char const* sessionSet(tr_session* session, tr_variant* args_in, tr_varia if (tr_variantDictFindInt(args_in, TR_KEY_seed_queue_size, &i)) { - tr_sessionSetQueueSize(session, TR_UP, i); + tr_sessionSetQueueSize(session, TR_UP, (int)i); } if (tr_variantDictFindStr(args_in, TR_KEY_script_torrent_done_filename, &str, NULL)) @@ -2705,7 +2708,7 @@ void tr_rpc_request_exec_json(tr_session* session, tr_variant const* request, tr tr_variant* const mutable_request = (tr_variant*)request; tr_variant* args_in = tr_variantDictFind(mutable_request, TR_KEY_arguments); char const* result = NULL; - struct method* method = NULL; + struct method const* method = NULL; if (callback == NULL) { diff --git a/libtransmission/session.c b/libtransmission/session.c index 0c6d68cc9..8845ccc53 100644 --- a/libtransmission/session.c +++ b/libtransmission/session.c @@ -1905,8 +1905,8 @@ tr_torrent** tr_sessionGetTorrents(tr_session* session, int* setme_n) static int compareTorrentByCur(void const* va, void const* vb) { - tr_torrent const* a = *(tr_torrent const**)va; - tr_torrent const* b = *(tr_torrent const**)vb; + tr_torrent const* a = *(tr_torrent const* const*)va; + tr_torrent const* b = *(tr_torrent const* const*)vb; uint64_t const aCur = a->downloadedCur + a->uploadedCur; uint64_t const bCur = b->downloadedCur + b->uploadedCur; diff --git a/libtransmission/subprocess-posix.c b/libtransmission/subprocess-posix.c index 3dd912c34..da41fc33f 100644 --- a/libtransmission/subprocess-posix.c +++ b/libtransmission/subprocess-posix.c @@ -63,24 +63,24 @@ static bool tr_spawn_async_in_child(char* const* cmd, char* const* env, char con { if (putenv(env[i]) != 0) { - goto fail; + goto FAIL; } } } if (work_dir != NULL && chdir(work_dir) == -1) { - goto fail; + goto FAIL; } if (execvp(cmd[0], cmd) == -1) { - goto fail; + goto FAIL; } return true; -fail: +FAIL: (void)write(pipe_fd, &errno, sizeof(errno)); return false; } diff --git a/libtransmission/torrent.c b/libtransmission/torrent.c index f9e806df7..202545405 100644 --- a/libtransmission/torrent.c +++ b/libtransmission/torrent.c @@ -1874,28 +1874,25 @@ static void onVerifyDoneThreadFunc(void* vdata) struct verify_data* data = vdata; tr_torrent* tor = data->tor; - if (tor->isDeleting) + if (!tor->isDeleting) { - goto cleanup; + if (!data->aborted) + { + tr_torrentRecheckCompleteness(tor); + } + + if (data->callback_func != NULL) + { + (*data->callback_func)(tor, data->aborted, data->callback_data); + } + + if (!data->aborted && tor->startAfterVerify) + { + tor->startAfterVerify = false; + torrentStart(tor, false); + } } - if (!data->aborted) - { - tr_torrentRecheckCompleteness(tor); - } - - if (data->callback_func != NULL) - { - (*data->callback_func)(tor, data->aborted, data->callback_data); - } - - if (!data->aborted && tor->startAfterVerify) - { - tor->startAfterVerify = false; - torrentStart(tor, false); - } - -cleanup: tr_free(data); } diff --git a/libtransmission/tr-lpd.c b/libtransmission/tr-lpd.c index 9ecffcbac..93d73365f 100644 --- a/libtransmission/tr-lpd.c +++ b/libtransmission/tr-lpd.c @@ -265,15 +265,11 @@ static bool lpd_extractParam(char const* const str, char const* const name, int char const* const new_line = strstr(beg, CRLF); /* the value is delimited by the next CRLF */ - int len = new_line - beg; + int const len = new_line - beg; /* if value string hits the length limit n, * leave space for a trailing '\0' character */ - if (len < n--) - { - n = len; - } - + n = MIN(len, n - 1); strncpy(val, beg, n); val[n] = 0; } diff --git a/libtransmission/tr-udp.c b/libtransmission/tr-udp.c index 7e772088e..17d569d3c 100644 --- a/libtransmission/tr-udp.c +++ b/libtransmission/tr-udp.c @@ -161,7 +161,7 @@ static void rebind_ipv6(tr_session* ss, bool force) if (s == TR_BAD_SOCKET) { - goto fail; + goto FAIL; } #ifdef IPV6_V6ONLY @@ -190,7 +190,7 @@ static void rebind_ipv6(tr_session* ss, bool force) if (rc == -1) { - goto fail; + goto FAIL; } if (ss->udp6_socket == TR_BAD_SOCKET) @@ -204,7 +204,7 @@ static void rebind_ipv6(tr_session* ss, bool force) if (rc == -1) { - goto fail; + goto FAIL; } tr_netCloseSocket(s); @@ -222,7 +222,7 @@ static void rebind_ipv6(tr_session* ss, bool force) return; -fail: +FAIL: /* Something went wrong. It's difficult to recover, so let's simply set things up so that we try again next time. */ tr_logAddNamedError("UDP", "Couldn't rebind IPv6 socket"); @@ -318,7 +318,7 @@ void tr_udpInit(tr_session* ss) if (ss->udp_socket == TR_BAD_SOCKET) { tr_logAddNamedError("UDP", "Couldn't create IPv4 socket"); - goto ipv6; + goto IPV6; } memset(&sin, 0, sizeof(sin)); @@ -338,7 +338,7 @@ void tr_udpInit(tr_session* ss) tr_logAddNamedError("UDP", "Couldn't bind IPv4 socket"); tr_netCloseSocket(ss->udp_socket); ss->udp_socket = TR_BAD_SOCKET; - goto ipv6; + goto IPV6; } ss->udp_event = event_new(ss->event_base, ss->udp_socket, EV_READ | EV_PERSIST, event_callback, ss); @@ -348,7 +348,7 @@ void tr_udpInit(tr_session* ss) tr_logAddNamedError("UDP", "Couldn't allocate IPv4 event"); } -ipv6: +IPV6: if (tr_globalIPv6() != NULL) { rebind_ipv6(ss, true); diff --git a/libtransmission/utils.c b/libtransmission/utils.c index 86381441f..5506a6165 100644 --- a/libtransmission/utils.c +++ b/libtransmission/utils.c @@ -2217,19 +2217,14 @@ char* tr_env_get_string(char const* key, char const* default_value) #else - char* value = getenv(key); + char const* value = getenv(key); if (value == NULL) { - value = (char*)default_value; + value = default_value; } - if (value != NULL) - { - value = tr_strdup(value); - } - - return value; + return value != NULL ? tr_strdup(value) : NULL; #endif } diff --git a/libtransmission/variant-benc.c b/libtransmission/variant-benc.c index ff877fdef..f9192cfc3 100644 --- a/libtransmission/variant-benc.c +++ b/libtransmission/variant-benc.c @@ -102,19 +102,19 @@ int tr_bencParseStr(void const* vbuf, void const* vbufend, uint8_t const** setme if (buf >= bufend) { - goto err; + goto ERR; } if (!isdigit(*buf)) { - goto err; + goto ERR; } end = memchr(buf, ':', bufend - buf); if (end == NULL) { - goto err; + goto ERR; } errno = 0; @@ -122,7 +122,7 @@ int tr_bencParseStr(void const* vbuf, void const* vbufend, uint8_t const** setme if (errno != 0 || ulend != end || len > MAX_BENC_STR_LENGTH) { - goto err; + goto ERR; } strbegin = (uint8_t const*)end + 1; @@ -130,7 +130,7 @@ int tr_bencParseStr(void const* vbuf, void const* vbufend, uint8_t const** setme if (strend < strbegin || strend > bufend) { - goto err; + goto ERR; } *setme_end = (uint8_t const*)end + 1 + len; @@ -138,7 +138,7 @@ int tr_bencParseStr(void const* vbuf, void const* vbufend, uint8_t const** setme *setme_strlen = len; return 0; -err: +ERR: *setme_end = NULL; *setme_str = NULL; *setme_strlen = 0; diff --git a/libtransmission/variant.c b/libtransmission/variant.c index 58b0cd1f1..575c08db5 100644 --- a/libtransmission/variant.c +++ b/libtransmission/variant.c @@ -339,7 +339,7 @@ bool tr_variantGetRaw(tr_variant const* v, uint8_t const** setme_raw, size_t* se if (success) { - *setme_raw = (uint8_t*)getStr(v); + *setme_raw = (uint8_t const*)getStr(v); *setme_len = v->val.s.len; } @@ -388,7 +388,7 @@ bool tr_variantGetReal(tr_variant const* v, double* setme) if (!success && tr_variantIsInt(v)) { - *setme = v->val.i; + *setme = (double)v->val.i; success = true; } @@ -415,19 +415,19 @@ bool tr_variantGetReal(tr_variant const* v, double* setme) bool tr_variantDictFindInt(tr_variant* dict, tr_quark const key, int64_t* setme) { - tr_variant* child = tr_variantDictFind(dict, key); + tr_variant const* child = tr_variantDictFind(dict, key); return tr_variantGetInt(child, setme); } bool tr_variantDictFindBool(tr_variant* dict, tr_quark const key, bool* setme) { - tr_variant* child = tr_variantDictFind(dict, key); + tr_variant const* child = tr_variantDictFind(dict, key); return tr_variantGetBool(child, setme); } bool tr_variantDictFindReal(tr_variant* dict, tr_quark const key, double* setme) { - tr_variant* child = tr_variantDictFind(dict, key); + tr_variant const* child = tr_variantDictFind(dict, key); return tr_variantGetReal(child, setme); } @@ -449,7 +449,7 @@ bool tr_variantDictFindDict(tr_variant* dict, tr_quark const key, tr_variant** s bool tr_variantDictFindRaw(tr_variant* dict, tr_quark const key, uint8_t const** setme_raw, size_t* setme_len) { - tr_variant* child = tr_variantDictFind(dict, key); + tr_variant const* child = tr_variantDictFind(dict, key); return tr_variantGetRaw(child, setme_raw, setme_len); } @@ -721,7 +721,7 @@ bool tr_variantDictRemove(tr_variant* dict, tr_quark const key) if (i >= 0) { - int const last = dict->val.l.count - 1; + int const last = (int)dict->val.l.count - 1; tr_variantFree(&dict->val.l.vals[i]); @@ -842,7 +842,7 @@ void tr_variantWalk(tr_variant const* v_in, struct VariantWalkFuncs const* walkF } else if (tr_variantIsContainer(node->v) && node->childIndex < node->v->val.l.count) { - int const index = node->childIndex; + size_t const index = node->childIndex; ++node->childIndex; v = node->v->val.l.vals + index; @@ -1165,55 +1165,55 @@ char* tr_variantToStr(tr_variant const* v, tr_variant_fmt fmt, size_t* len) return evbuffer_free_to_str(buf, len); } +static int writeVariantToFd(tr_variant const* v, tr_variant_fmt fmt, tr_sys_file_t fd, tr_error** error) +{ + int err = 0; + struct evbuffer* buf = tr_variantToBuf(v, fmt); + char const* walk = (char const*)evbuffer_pullup(buf, -1); + uint64_t nleft = evbuffer_get_length(buf); + + while (nleft > 0) + { + uint64_t n = 0; + + tr_error* tmperr = NULL; + if (!tr_sys_file_write(fd, walk, nleft, &n, &tmperr)) + { + err = tmperr->code; + tr_error_propagate(error, &tmperr); + break; + } + + nleft -= n; + walk += n; + } + + evbuffer_free(buf); + return err; +} + int tr_variantToFile(tr_variant const* v, tr_variant_fmt fmt, char const* filename) { - char* tmp; - tr_sys_file_t fd; - int err = 0; - char* real_filename; - tr_error* error = NULL; - /* follow symlinks to find the "real" file, to make sure the temporary * we build with tr_sys_file_open_temp() is created on the right partition */ - if ((real_filename = tr_sys_path_resolve(filename, NULL)) != NULL) + char* real_filename = tr_sys_path_resolve(filename, NULL); + if (real_filename != NULL) { filename = real_filename; } /* if the file already exists, try to move it out of the way & keep it as a backup */ - tmp = tr_strdup_printf("%s.tmp.XXXXXX", filename); - fd = tr_sys_file_open_temp(tmp, &error); + char* const tmp = tr_strdup_printf("%s.tmp.XXXXXX", filename); + tr_error* error = NULL; + tr_sys_file_t const fd = tr_sys_file_open_temp(tmp, &error); + int err = 0; if (fd != TR_BAD_SYS_FILE) { - uint64_t nleft; - - /* save the variant to a temporary file */ - { - struct evbuffer* buf = tr_variantToBuf(v, fmt); - char const* walk = (char const*)evbuffer_pullup(buf, -1); - nleft = evbuffer_get_length(buf); - - while (nleft > 0) - { - uint64_t n; - - if (!tr_sys_file_write(fd, walk, nleft, &n, &error)) - { - err = error->code; - break; - } - - nleft -= n; - walk += n; - } - - evbuffer_free(buf); - } - + err = writeVariantToFd(v, fmt, fd, &error); tr_sys_file_close(fd, NULL); - if (nleft > 0) + if (err) { tr_logAddError(_("Couldn't save temporary file \"%1$s\": %2$s"), tmp, error->message); tr_sys_path_remove(tmp, NULL); diff --git a/libtransmission/watchdir-generic.c b/libtransmission/watchdir-generic.c index 62daa348c..e5dc15baf 100644 --- a/libtransmission/watchdir-generic.c +++ b/libtransmission/watchdir-generic.c @@ -93,13 +93,13 @@ tr_watchdir_backend* tr_watchdir_generic_new(tr_watchdir_t handle) handle)) == NULL) { log_error("Failed to create event: %s", tr_strerror(errno)); - goto fail; + goto FAIL; } if (event_add(backend->event, &tr_watchdir_generic_interval) == -1) { log_error("Failed to add event: %s", tr_strerror(errno)); - goto fail; + goto FAIL; } /* Run initial scan on startup */ @@ -107,7 +107,7 @@ tr_watchdir_backend* tr_watchdir_generic_new(tr_watchdir_t handle) return BACKEND_DOWNCAST(backend); -fail: +FAIL: tr_watchdir_generic_free(BACKEND_DOWNCAST(backend)); return NULL; } diff --git a/libtransmission/watchdir-inotify.c b/libtransmission/watchdir-inotify.c index d5a2ea8ef..329228fa7 100644 --- a/libtransmission/watchdir-inotify.c +++ b/libtransmission/watchdir-inotify.c @@ -166,19 +166,19 @@ tr_watchdir_backend* tr_watchdir_inotify_new(tr_watchdir_t handle) if ((backend->infd = inotify_init()) == -1) { log_error("Unable to inotify_init: %s", tr_strerror(errno)); - goto fail; + goto FAIL; } if ((backend->inwd = inotify_add_watch(backend->infd, path, INOTIFY_WATCH_MASK | IN_ONLYDIR)) == -1) { log_error("Failed to setup watchdir \"%s\": %s (%d)", path, tr_strerror(errno), errno); - goto fail; + goto FAIL; } if ((backend->event = bufferevent_socket_new(tr_watchdir_get_event_base(handle), backend->infd, 0)) == NULL) { log_error("Failed to create event buffer: %s", tr_strerror(errno)); - goto fail; + goto FAIL; } /* Guarantees at least the sizeof an inotify event will be available in the @@ -196,7 +196,7 @@ tr_watchdir_backend* tr_watchdir_inotify_new(tr_watchdir_t handle) return BACKEND_DOWNCAST(backend); -fail: +FAIL: tr_watchdir_inotify_free(BACKEND_DOWNCAST(backend)); return NULL; } diff --git a/libtransmission/watchdir.c b/libtransmission/watchdir.c index ba7e77c7f..b7b7ad35a 100644 --- a/libtransmission/watchdir.c +++ b/libtransmission/watchdir.c @@ -136,7 +136,7 @@ struct timeval tr_watchdir_retry_max_interval = { .tv_sec = 10, .tv_usec = 0 }; static int compare_retry_names(void const* a, void const* b) { - return strcmp(((tr_watchdir_retry*)a)->name, ((tr_watchdir_retry*)b)->name); + return strcmp(((tr_watchdir_retry const*)a)->name, ((tr_watchdir_retry const*)b)->name); } static void tr_watchdir_retry_free(tr_watchdir_retry* retry); diff --git a/qt/FileTreeView.h b/qt/FileTreeView.h index 764fceb92..658b6353a 100644 --- a/qt/FileTreeView.h +++ b/qt/FileTreeView.h @@ -68,7 +68,6 @@ private: static Qt::CheckState getCumulativeCheckState(QModelIndexList const& indices); -private: FileTreeModel* model_ = {}; QSortFilterProxyModel* proxy_ = {}; FileTreeDelegate* delegate_ = {}; diff --git a/qt/FilterBar.cc b/qt/FilterBar.cc index 0b2927833..3024976a7 100644 --- a/qt/FilterBar.cc +++ b/qt/FilterBar.cc @@ -98,7 +98,7 @@ QString getCountString(int n) } Torrent::fields_t constexpr TrackerFields = { - (uint64_t(1) << Torrent::TRACKER_STATS) + uint64_t(1) << Torrent::TRACKER_STATS }; auto constexpr ActivityFields = FilterMode::TorrentFields; diff --git a/qt/FilterBarComboBox.h b/qt/FilterBarComboBox.h index 52bf30516..f46036557 100644 --- a/qt/FilterBarComboBox.h +++ b/qt/FilterBarComboBox.h @@ -25,7 +25,6 @@ public: UserRole }; -public: explicit FilterBarComboBox(QWidget* parent = nullptr); // QWidget diff --git a/qt/Filters.h b/qt/Filters.h index 5af2a41c5..53e3848a0 100644 --- a/qt/Filters.h +++ b/qt/Filters.h @@ -28,7 +28,6 @@ public: NUM_MODES }; -public: explicit FilterMode(int mode = SHOW_ALL) : mode_(mode) { @@ -76,7 +75,6 @@ public: NUM_MODES }; -public: explicit SortMode(int mode = SORT_BY_ID) : mode_(mode) { diff --git a/qt/FreeSpaceLabel.h b/qt/FreeSpaceLabel.h index ebf3454cc..742c60323 100644 --- a/qt/FreeSpaceLabel.h +++ b/qt/FreeSpaceLabel.h @@ -27,7 +27,7 @@ class FreeSpaceLabel : public QLabel TR_DISABLE_COPY_MOVE(FreeSpaceLabel) public: - FreeSpaceLabel(QWidget* parent = nullptr); + explicit FreeSpaceLabel(QWidget* parent = nullptr); void setSession(Session& session); void setPath(QString const& folder); diff --git a/qt/MainWindow.cc b/qt/MainWindow.cc index 63b49065d..9af4fc3e8 100644 --- a/qt/MainWindow.cc +++ b/qt/MainWindow.cc @@ -137,7 +137,7 @@ MainWindow::MainWindow(Session& session, Prefs& prefs, TorrentModel& model, bool session_(session), prefs_(prefs), model_(model), - lvp_style_(new ListViewProxyStyle{}), + lvp_style_(std::make_shared()), filter_model_(prefs), torrent_delegate_(new TorrentDelegate(this)), torrent_delegate_min_(new TorrentDelegateMin(this)), @@ -573,7 +573,10 @@ namespace { // Open Folder & select torrent's file or top folder + +#ifdef HAVE_OPEN_SELECT #undef HAVE_OPEN_SELECT +#endif #if defined(Q_OS_WIN) diff --git a/qt/MainWindow.h b/qt/MainWindow.h index 1f1cb0336..c677282c1 100644 --- a/qt/MainWindow.h +++ b/qt/MainWindow.h @@ -91,24 +91,6 @@ protected: void dragEnterEvent(QDragEnterEvent*) override; void dropEvent(QDropEvent*) override; -private: - QIcon getStockIcon(QString const&, int fallback = -1); - QIcon addEmblem(QIcon icon, QStringList const& emblem_names); - - torrent_ids_t getSelectedTorrents(bool withMetadataOnly = false) const; - void updateNetworkIcon(); - - QMenu* createOptionsMenu(); - QMenu* createStatsModeMenu(); - void initStatusBar(); - - void clearSelection(); - void addTorrent(AddData const& add_me, bool show_options); - - // QWidget - void hideEvent(QHideEvent* event) override; - void showEvent(QShowEvent* event) override; - private slots: void addTorrents(QStringList const& filenames); void copyMagnetLinkToClipboard(); @@ -141,6 +123,23 @@ private slots: void trayActivated(QSystemTrayIcon::ActivationReason); private: + QIcon getStockIcon(QString const&, int fallback = -1); + QIcon addEmblem(QIcon icon, QStringList const& emblem_names); + + torrent_ids_t getSelectedTorrents(bool withMetadataOnly = false) const; + void updateNetworkIcon(); + + QMenu* createOptionsMenu(); + QMenu* createStatsModeMenu(); + void initStatusBar(); + + void clearSelection(); + void addTorrent(AddData const& add_me, bool show_options); + + // QWidget + void hideEvent(QHideEvent* event) override; + void showEvent(QShowEvent* event) override; + Session& session_; Prefs& prefs_; TorrentModel& model_; diff --git a/qt/MakeDialog.h b/qt/MakeDialog.h index c9079146e..134d52ebf 100644 --- a/qt/MakeDialog.h +++ b/qt/MakeDialog.h @@ -36,14 +36,13 @@ protected: void dragEnterEvent(QDragEnterEvent*) override; void dropEvent(QDropEvent*) override; -private: - QString getSource() const; - private slots: void onSourceChanged(); void makeTorrent(); private: + QString getSource() const; + Session& session_; Ui::MakeDialog ui_ = {}; diff --git a/qt/OptionsDialog.h b/qt/OptionsDialog.h index 8f2dd4a0c..fefa38bc0 100644 --- a/qt/OptionsDialog.h +++ b/qt/OptionsDialog.h @@ -39,15 +39,6 @@ public: OptionsDialog(Session& session, Prefs const& prefs, AddData addme, QWidget* parent = nullptr); ~OptionsDialog() override; -private: - using mybins_t = QMap; - -private: - void reload(); - void updateWidgetsLocality(); - void clearInfo(); - void clearVerify(); - private slots: void onAccepted(); void onPriorityChanged(QSet const& file_indices, int); @@ -61,6 +52,13 @@ private slots: void onSessionUpdated(); private: + using mybins_t = QMap; + + void reload(); + void updateWidgetsLocality(); + void clearInfo(); + void clearVerify(); + AddData add_; FileList files_; QCryptographicHash verify_hash_ = QCryptographicHash(QCryptographicHash::Sha1); diff --git a/qt/PathButton.h b/qt/PathButton.h index fb9fcfc76..456e7085a 100644 --- a/qt/PathButton.h +++ b/qt/PathButton.h @@ -24,7 +24,6 @@ public: FileMode }; -public: explicit PathButton(QWidget* parent = nullptr); void setMode(Mode mode); diff --git a/qt/PrefsDialog.h b/qt/PrefsDialog.h index 512cffc3f..15ba511c6 100644 --- a/qt/PrefsDialog.h +++ b/qt/PrefsDialog.h @@ -30,25 +30,6 @@ class PrefsDialog : public BaseDialog public: PrefsDialog(Session&, Prefs&, QWidget* parent = nullptr); -private: - using key2widget_t = QMap; - -private: - bool updateWidgetValue(QWidget* widget, int pref_key); - void linkWidgetToPref(QWidget* widget, int pref_key); - void updateBlocklistLabel(); - void updateDownloadingWidgetsLocality(); - - void setPref(int key, QVariant const& v); - - void initDownloadingTab(); - void initSeedingTab(); - void initSpeedTab(); - void initPrivacyTab(); - void initNetworkTab(); - void initDesktopTab(); - void initRemoteTab(); - private slots: void checkBoxToggled(bool checked); void spinBoxEditingFinished(); @@ -70,6 +51,23 @@ private slots: void onBlocklistUpdated(int n); private: + using key2widget_t = QMap; + + bool updateWidgetValue(QWidget* widget, int pref_key); + void linkWidgetToPref(QWidget* widget, int pref_key); + void updateBlocklistLabel(); + void updateDownloadingWidgetsLocality(); + + void setPref(int key, QVariant const& v); + + void initDownloadingTab(); + void initSeedingTab(); + void initSpeedTab(); + void initPrivacyTab(); + void initNetworkTab(); + void initDesktopTab(); + void initRemoteTab(); + Session& session_; Prefs& prefs_; diff --git a/qt/RelocateDialog.h b/qt/RelocateDialog.h index 1cd08f67e..6a853bc22 100644 --- a/qt/RelocateDialog.h +++ b/qt/RelocateDialog.h @@ -24,14 +24,13 @@ class RelocateDialog : public BaseDialog public: RelocateDialog(Session&, TorrentModel const&, torrent_ids_t ids, QWidget* parent = nullptr); -private: - QString newLocation() const; - private slots: void onSetLocation(); void onMoveToggled(bool); private: + QString newLocation() const; + Session& session_; torrent_ids_t const ids_; diff --git a/qt/Session.h b/qt/Session.h index 7ba4f55d8..75ba977c4 100644 --- a/qt/Session.h +++ b/qt/Session.h @@ -144,6 +144,9 @@ signals: void networkResponse(QNetworkReply::NetworkError code, QString const& message); void httpAuthenticationRequired(); +private slots: + void onDuplicatesTimer(); + private: void start(); @@ -161,7 +164,6 @@ private: void addOptionalIds(tr_variant* args, torrent_ids_t const& ids); -private: QString const config_dir_; Prefs& prefs_; @@ -180,7 +182,4 @@ private: std::map duplicates_; QTimer duplicates_timer_; - -private slots: - void onDuplicatesTimer(); }; diff --git a/qt/Speed.h b/qt/Speed.h index eedbd745a..b586d9ed0 100644 --- a/qt/Speed.h +++ b/qt/Speed.h @@ -69,6 +69,5 @@ private: { } -private: int bytes_per_second_ = {}; }; diff --git a/qt/TorrentModel.cc b/qt/TorrentModel.cc index db262224b..3553bebdf 100644 --- a/qt/TorrentModel.cc +++ b/qt/TorrentModel.cc @@ -185,13 +185,12 @@ void TorrentModel::updateTorrents(tr_variant* torrents, bool is_complete_list) keys.push_back(tr_quark_new(str, len)); } } - else + else if (first_child != nullptr) { // In 'object' format, every entry is an object with the same set of properties - size_t i = 0; tr_quark key; tr_variant* value; - while (first_child && tr_variantDictChild(first_child, i++, &key, &value)) + for (size_t i = 0; tr_variantDictChild(first_child, i, &key, &value); ++i) { keys.push_back(key); } diff --git a/qt/TrackerModel.h b/qt/TrackerModel.h index e97b0dcd7..6c9f9d1bf 100644 --- a/qt/TrackerModel.h +++ b/qt/TrackerModel.h @@ -36,7 +36,6 @@ public: TrackerRole = Qt::UserRole }; -public: TrackerModel() = default; void refresh(TorrentModel const&, torrent_ids_t const& ids); @@ -49,6 +48,5 @@ public: private: using rows_t = QVector; -private: rows_t rows_; }; diff --git a/qt/WatchDir.h b/qt/WatchDir.h index 03b650219..6eb97eac7 100644 --- a/qt/WatchDir.h +++ b/qt/WatchDir.h @@ -32,6 +32,12 @@ public: signals: void torrentFileAdded(QString const& filename); +private slots: + void watcherActivated(QString const& path); + void onTimeout(); + + void rescanAllWatchedDirectories(); + private: enum { @@ -40,16 +46,8 @@ private: ERROR }; -private: int metainfoTest(QString const& filename) const; -private slots: - void watcherActivated(QString const& path); - void onTimeout(); - - void rescanAllWatchedDirectories(); - -private: TorrentModel const& model_; QSet watch_dir_files_;