From e79ed464e9e2823553b296c07523185b90525c8c Mon Sep 17 00:00:00 2001 From: Kawe Mazidjatari <48657826+Mauler125@users.noreply.github.com> Date: Sun, 2 Apr 2023 21:51:15 +0200 Subject: [PATCH] Improve HexDump utility * Improved formatting. * Get default logger directly instead of using a string identifier. * Promoted size type to 'size_t'. * Removed extraneous static variables. --- r5dev/engine/net.cpp | 5 +++-- r5dev/public/utility/utility.cpp | 28 ++++++++++++++-------------- r5dev/public/utility/utility.h | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/r5dev/engine/net.cpp b/r5dev/engine/net.cpp index c4addbb2..5dc9114f 100644 --- a/r5dev/engine/net.cpp +++ b/r5dev/engine/net.cpp @@ -36,7 +36,8 @@ bool NET_ReceiveDatagram(int iSocket, netpacket_s* pInpacket, bool bEncrypted) if (result && net_tracePayload->GetBool()) { // Log received packet data. - HexDump("[+] NET_ReceiveDatagram", "net_trace", &pInpacket->pData[NULL], pInpacket->wiresize); + HexDump("[+] NET_ReceiveDatagram ", "net_trace", + &pInpacket->pData[NULL], size_t(pInpacket->wiresize)); } return result; } @@ -56,7 +57,7 @@ int NET_SendDatagram(SOCKET s, void* pPayload, int iLenght, netadr_t* pAdr, bool if (result && net_tracePayload->GetBool()) { // Log transmitted packet data. - HexDump("[+] NET_SendDatagram", "net_trace", pPayload, iLenght); + HexDump("[+] NET_SendDatagram ", "net_trace", pPayload, size_t(iLenght)); } return result; } diff --git a/r5dev/public/utility/utility.cpp b/r5dev/public/utility/utility.cpp index b906a312..00d96bd7 100644 --- a/r5dev/public/utility/utility.cpp +++ b/r5dev/public/utility/utility.cpp @@ -91,12 +91,11 @@ void PrintLastError(void) /////////////////////////////////////////////////////////////////////////////// // For dumping data from a buffer to a file on the disk. -void HexDump(const char* szHeader, const char* szLogger, const void* pData, int nSize) +void HexDump(const char* szHeader, const char* szLogger, const void* pData, size_t nSize) { - static char szAscii[17] = {}; + char szAscii[17]; static std::mutex m; - static std::atomic i = {}, j = {}, k = {}; - static std::shared_ptr logger = spdlog::get("default_logger"); + static std::shared_ptr logger = spdlog::default_logger(); m.lock(); szAscii[16] = '\0'; @@ -106,8 +105,9 @@ void HexDump(const char* szHeader, const char* szLogger, const void* pData, int logger = spdlog::get(szLogger); if (!logger) { + logger = spdlog::default_logger(); m.unlock(); - assert(logger == nullptr); + assert(0); return; } } @@ -115,19 +115,19 @@ void HexDump(const char* szHeader, const char* szLogger, const void* pData, int // Add time stamp. logger->set_level(spdlog::level::trace); logger->set_pattern("%v [%H:%M:%S.%f]\n"); - logger->trace("---------------------------------------------------------"); + logger->trace("--------------------------------------------------------"); // Disable EOL and create block header. logger->set_pattern("%v"); - logger->trace("{:s} ---- LEN BYTES: {:d}\n:\n", szHeader, nSize); - logger->trace("-------- 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF\n"); + logger->trace("{:-<32s} LEN BYTES: {:<20d} {:<8s}:\n:{:<72s}:\n", szHeader, nSize, " ", " "); + logger->trace("------- 0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF\n"); // Output the buffer to the file. - for (i = 0; i < nSize; i++) + for (size_t i = 0; i < nSize; i++) { if (i % nSize == 0) { - logger->trace(" 0x{:04X} ", i); + logger->trace("0x{:04X} ", i); } logger->trace("{:02x} ", (reinterpret_cast(pData))[i]); @@ -150,12 +150,12 @@ void HexDump(const char* szHeader, const char* szLogger, const void* pData, int { if (i + 1 == nSize) { - logger->trace("{:s}\n---------------------------------------------------------------------------\n\n", szAscii); + logger->trace("{:s}\n--------------------------------------------------------------------------\n\n", szAscii); } else { i++; - logger->trace("{:s}\n 0x{:04X} ", szAscii, i--); + logger->trace("{:s}\n0x{:04X} ", szAscii, i--); } } else if (i + 1 == nSize) @@ -165,11 +165,11 @@ void HexDump(const char* szHeader, const char* szLogger, const void* pData, int { logger->trace(' '); } - for (j = (i + 1) % 16; j < 16; j++) + for (size_t j = (i + 1) % 16; j < 16; j++) { logger->trace(" "); } - logger->trace("{:s}\n---------------------------------------------------------------------------\n\n", szAscii); + logger->trace("{:s}\n--------------------------------------------------------------------------\n\n", szAscii); } } } diff --git a/r5dev/public/utility/utility.h b/r5dev/public/utility/utility.h index 98234b58..7c14f9f8 100644 --- a/r5dev/public/utility/utility.h +++ b/r5dev/public/utility/utility.h @@ -11,7 +11,7 @@ MODULEINFO GetModuleInfo(const char* szModule); // Debug void DbgPrint(LPCSTR sFormat, ...); void PrintLastError(void); -void HexDump(const char* szHeader, const char* szLogger, const void* pData, int nSize); +void HexDump(const char* szHeader, const char* szLogger, const void* pData, size_t nSize); ///////////////////////////////////////////////////////////////////////////// // Char