diff --git a/gtk/OptionsDialog.cc b/gtk/OptionsDialog.cc index f1e6310f6..e33580090 100644 --- a/gtk/OptionsDialog.cc +++ b/gtk/OptionsDialog.cc @@ -99,7 +99,7 @@ void OptionsDialog::Impl::removeOldTorrent() if (tor_ != nullptr) { file_list_->clear(); - tr_torrentRemove(tor_, false, nullptr); + tr_torrentRemove(tor_, false, nullptr, nullptr); tor_ = nullptr; } } diff --git a/gtk/Session.cc b/gtk/Session.cc index 5cfd40c94..ac2dfd752 100644 --- a/gtk/Session.cc +++ b/gtk/Session.cc @@ -1265,7 +1265,9 @@ void Session::remove_torrent(tr_torrent_id_t id, bool delete_local_data) tr_torrentRemove( tor, delete_local_data, - [](char const* filename, tr_error** error) { return gtr_file_trash_or_remove(filename, error); }); + [](char const* filename, void* /*user_data*/, tr_error** error) + { return gtr_file_trash_or_remove(filename, error); }, + nullptr); } } diff --git a/libtransmission/rpcimpl.cc b/libtransmission/rpcimpl.cc index bb162e45a..870fddd5d 100644 --- a/libtransmission/rpcimpl.cc +++ b/libtransmission/rpcimpl.cc @@ -296,7 +296,7 @@ static char const* torrentRemove( { if (auto const status = session->rpcNotify(type, tor); (status & TR_RPC_NOREMOVE) == 0) { - tr_torrentRemove(tor, delete_flag, nullptr); + tr_torrentRemove(tor, delete_flag, nullptr, nullptr); } } diff --git a/libtransmission/torrent.cc b/libtransmission/torrent.cc index ff4175a77..7fae7939f 100644 --- a/libtransmission/torrent.cc +++ b/libtransmission/torrent.cc @@ -1623,7 +1623,12 @@ void tr_torrentFree(tr_torrent* tor) } } -static void removeTorrentInEventThread(tr_torrent* tor, bool delete_flag, tr_fileFunc delete_func) +static bool removeTorrentFile(char const* filename, void* /*user_data*/, tr_error** error) +{ + return tr_sys_path_remove(filename, error); +} + +static void removeTorrentInEventThread(tr_torrent* tor, bool delete_flag, tr_fileFunc delete_func, void* user_data) { auto const lock = tor->unique_lock(); @@ -1635,12 +1640,12 @@ static void removeTorrentInEventThread(tr_torrent* tor, bool delete_flag, tr_fil if (delete_func == nullptr) { - delete_func = tr_sys_path_remove; + delete_func = removeTorrentFile; } - auto const delete_func_wrapper = [&delete_func](char const* filename) + auto const delete_func_wrapper = [&delete_func, user_data](char const* filename) { - delete_func(filename, nullptr); + delete_func(filename, user_data, nullptr); }; tor->metainfo_.files().remove(tor->currentDir(), tor->name(), delete_func_wrapper); } @@ -1648,13 +1653,13 @@ static void removeTorrentInEventThread(tr_torrent* tor, bool delete_flag, tr_fil closeTorrent(tor); } -void tr_torrentRemove(tr_torrent* tor, bool delete_flag, tr_fileFunc delete_func) +void tr_torrentRemove(tr_torrent* tor, bool delete_flag, tr_fileFunc delete_func, void* user_data) { TR_ASSERT(tr_isTorrent(tor)); tor->isDeleting = true; - tr_runInEventThread(tor->session, removeTorrentInEventThread, tor, delete_flag, delete_func); + tr_runInEventThread(tor->session, removeTorrentInEventThread, tor, delete_flag, delete_func, user_data); } /** diff --git a/libtransmission/transmission.h b/libtransmission/transmission.h index 3724beb1f..bb4569579 100644 --- a/libtransmission/transmission.h +++ b/libtransmission/transmission.h @@ -872,10 +872,10 @@ tr_torrent* tr_torrentNew(tr_ctor* ctor, tr_torrent** setme_duplicate_of); /** @addtogroup tr_torrent Torrents @{ */ -using tr_fileFunc = bool (*)(char const* filename, struct tr_error** error); +using tr_fileFunc = bool (*)(char const* filename, void* user_data, struct tr_error** error); /** @brief Removes our torrent and .resume files for this torrent */ -void tr_torrentRemove(tr_torrent* torrent, bool delete_flag, tr_fileFunc delete_func); +void tr_torrentRemove(tr_torrent* torrent, bool delete_flag, tr_fileFunc delete_func, void* user_data); /** @brief Start a torrent */ void tr_torrentStart(tr_torrent* torrent); diff --git a/macosx/Torrent.mm b/macosx/Torrent.mm index 231aea16f..74796280c 100644 --- a/macosx/Torrent.mm +++ b/macosx/Torrent.mm @@ -101,7 +101,7 @@ void renameCallback(tr_torrent* torrent, char const* oldPathCharString, char con } } -bool trashDataFile(char const* filename, tr_error** error) +bool trashDataFile(char const* filename, void* /*user_data*/, tr_error** error) { if (filename == NULL) { @@ -213,7 +213,7 @@ bool trashDataFile(char const* filename, tr_error** error) //allow the file to be indexed by Time Machine [self setTimeMachineExclude:NO]; - tr_torrentRemove(self.fHandle, trashFiles, trashDataFile); + tr_torrentRemove(self.fHandle, trashFiles, trashDataFile, nullptr); } - (void)changeDownloadFolderBeforeUsing:(NSString*)folder determinationType:(TorrentDeterminationType)determinationType diff --git a/tests/libtransmission/move-test.cc b/tests/libtransmission/move-test.cc index 4a6493987..cac458b88 100644 --- a/tests/libtransmission/move-test.cc +++ b/tests/libtransmission/move-test.cc @@ -133,7 +133,7 @@ TEST_P(IncompleteDirTest, incompleteDir) } // cleanup - tr_torrentRemove(tor, true, tr_sys_path_remove); + tr_torrentRemove(tor, true, nullptr, nullptr); } INSTANTIATE_TEST_SUITE_P( @@ -187,7 +187,7 @@ TEST_F(MoveTest, setLocation) } // cleanup - tr_torrentRemove(tor, true, tr_sys_path_remove); + tr_torrentRemove(tor, true, nullptr, nullptr); } } // namespace test diff --git a/tests/libtransmission/rename-test.cc b/tests/libtransmission/rename-test.cc index f8948539c..ce715530c 100644 --- a/tests/libtransmission/rename-test.cc +++ b/tests/libtransmission/rename-test.cc @@ -35,7 +35,7 @@ class RenameTest : public SessionTest protected: void torrentRemoveAndWait(tr_torrent* tor, size_t expected_torrent_count) { - tr_torrentRemove(tor, false, nullptr); + tr_torrentRemove(tor, false, nullptr, nullptr); auto const test = [this, expected_torrent_count]() { return std::size(session_->torrents()) == expected_torrent_count; diff --git a/tests/libtransmission/rpc-test.cc b/tests/libtransmission/rpc-test.cc index 91624fc0a..70416e4ff 100644 --- a/tests/libtransmission/rpc-test.cc +++ b/tests/libtransmission/rpc-test.cc @@ -185,7 +185,7 @@ TEST_F(RpcTest, sessionGet) // cleanup tr_variantClear(&response); - tr_torrentRemove(tor, false, nullptr); + tr_torrentRemove(tor, false, nullptr, nullptr); } } // namespace test