From 301bc49efe23d93cdc870508b28a6bc96be645d5 Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Fri, 10 Dec 2021 15:21:46 -0800 Subject: [PATCH] Common: Remove MD5.h It uses DiscIO, and Common shouldn't depend on DiscIO. Instead, put this code in NetPlayClient.cpp. --- Source/Core/Common/CMakeLists.txt | 2 -- Source/Core/Common/MD5.cpp | 54 ------------------------------ Source/Core/Common/MD5.h | 12 ------- Source/Core/Core/NetPlayClient.cpp | 42 +++++++++++++++++++++-- Source/Core/DolphinLib.props | 2 -- 5 files changed, 40 insertions(+), 72 deletions(-) delete mode 100644 Source/Core/Common/MD5.cpp delete mode 100644 Source/Core/Common/MD5.h diff --git a/Source/Core/Common/CMakeLists.txt b/Source/Core/Common/CMakeLists.txt index a2156c5b5d..5314f119f0 100644 --- a/Source/Core/Common/CMakeLists.txt +++ b/Source/Core/Common/CMakeLists.txt @@ -81,8 +81,6 @@ add_library(common MathUtil.h Matrix.cpp Matrix.h - MD5.cpp - MD5.h MemArena.h MemoryUtil.cpp MemoryUtil.h diff --git a/Source/Core/Common/MD5.cpp b/Source/Core/Common/MD5.cpp deleted file mode 100644 index 976d80575b..0000000000 --- a/Source/Core/Common/MD5.cpp +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2016 Dolphin Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "Common/MD5.h" - -#include -#include -#include -#include - -#include - -#include "Common/StringUtil.h" -#include "DiscIO/Blob.h" - -namespace MD5 -{ -std::string MD5Sum(const std::string& file_path, std::function report_progress) -{ - std::string output_string; - std::vector data(8 * 1024 * 1024); - u64 read_offset = 0; - mbedtls_md5_context ctx; - - std::unique_ptr file(DiscIO::CreateBlobReader(file_path)); - u64 game_size = file->GetDataSize(); - - mbedtls_md5_starts_ret(&ctx); - - while (read_offset < game_size) - { - size_t read_size = std::min(static_cast(data.size()), game_size - read_offset); - if (!file->Read(read_offset, read_size, data.data())) - return output_string; - - mbedtls_md5_update_ret(&ctx, data.data(), read_size); - read_offset += read_size; - - int progress = - static_cast(static_cast(read_offset) / static_cast(game_size) * 100); - if (!report_progress(progress)) - return output_string; - } - - std::array output; - mbedtls_md5_finish_ret(&ctx, output.data()); - - // Convert to hex - for (u8 n : output) - output_string += fmt::format("{:02x}", n); - - return output_string; -} -} // namespace MD5 diff --git a/Source/Core/Common/MD5.h b/Source/Core/Common/MD5.h deleted file mode 100644 index 58eabc6816..0000000000 --- a/Source/Core/Common/MD5.h +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2016 Dolphin Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include -#include - -namespace MD5 -{ -std::string MD5Sum(const std::string& file_name, std::function progress); -} diff --git a/Source/Core/Core/NetPlayClient.cpp b/Source/Core/Core/NetPlayClient.cpp index 45782dfe21..115b101499 100644 --- a/Source/Core/Core/NetPlayClient.cpp +++ b/Source/Core/Core/NetPlayClient.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -23,7 +24,6 @@ #include "Common/ENetUtil.h" #include "Common/FileUtil.h" #include "Common/Logging/Log.h" -#include "Common/MD5.h" #include "Common/MsgHandler.h" #include "Common/NandPaths.h" #include "Common/QoSSession.h" @@ -62,6 +62,7 @@ #include "Core/NetPlayCommon.h" #include "Core/PowerPC/PowerPC.h" #include "Core/SyncIdentifier.h" +#include "DiscIO/Blob.h" #include "InputCommon/ControllerEmu/ControlGroup/Attachments.h" #include "InputCommon/GCAdapter.h" @@ -2462,6 +2463,43 @@ bool NetPlayClient::DoAllPlayersHaveGame() }); } +static std::string MD5Sum(const std::string& file_path, std::function report_progress) +{ + std::string output_string; + std::vector data(8 * 1024 * 1024); + u64 read_offset = 0; + mbedtls_md5_context ctx; + + std::unique_ptr file(DiscIO::CreateBlobReader(file_path)); + u64 game_size = file->GetDataSize(); + + mbedtls_md5_starts_ret(&ctx); + + while (read_offset < game_size) + { + size_t read_size = std::min(static_cast(data.size()), game_size - read_offset); + if (!file->Read(read_offset, read_size, data.data())) + return output_string; + + mbedtls_md5_update_ret(&ctx, data.data(), read_size); + read_offset += read_size; + + int progress = + static_cast(static_cast(read_offset) / static_cast(game_size) * 100); + if (!report_progress(progress)) + return output_string; + } + + std::array output; + mbedtls_md5_finish_ret(&ctx, output.data()); + + // Convert to hex + for (u8 n : output) + output_string += fmt::format("{:02x}", n); + + return output_string; +} + void NetPlayClient::ComputeMD5(const SyncIdentifier& sync_identifier) { if (m_should_compute_MD5) @@ -2488,7 +2526,7 @@ void NetPlayClient::ComputeMD5(const SyncIdentifier& sync_identifier) if (m_MD5_thread.joinable()) m_MD5_thread.join(); m_MD5_thread = std::thread([this, file]() { - std::string sum = MD5::MD5Sum(file, [&](int progress) { + std::string sum = MD5Sum(file, [&](int progress) { sf::Packet packet; packet << MessageID::MD5Progress; packet << progress; diff --git a/Source/Core/DolphinLib.props b/Source/Core/DolphinLib.props index 6c267853df..60a4e2299d 100644 --- a/Source/Core/DolphinLib.props +++ b/Source/Core/DolphinLib.props @@ -123,7 +123,6 @@ - @@ -723,7 +722,6 @@ -