From eea008649598ace5e625ec9771cb5291de04420c Mon Sep 17 00:00:00 2001 From: robojumper Date: Sat, 25 May 2024 22:47:39 +0200 Subject: [PATCH] Expatriate the inline string methods --- include/inline_string.h | 31 +++++++++++++++++++++++++++++++ src/d/d_rawarchive.cpp | 30 +----------------------------- src/toBeSorted/file_manager.cpp | 5 ++--- 3 files changed, 34 insertions(+), 32 deletions(-) create mode 100644 include/inline_string.h diff --git a/include/inline_string.h b/include/inline_string.h new file mode 100644 index 00000000..3909422f --- /dev/null +++ b/include/inline_string.h @@ -0,0 +1,31 @@ +#ifndef INLINE_STRING_H +#define INLINE_STRING_H + +#include + +inline void inline_strncat(char *dest, const char *src, size_t destSize) { + if (src != nullptr) { + size_t destLen = strlen(dest); + size_t copyLen = strlen(src); + + // Make sure copy length isnt more than destination length + if (destLen + copyLen + 1 >= destSize) { + copyLen = destSize - destLen - 1; + } + + strncpy(dest + destLen, src, copyLen); + + // make sure string is null terminated + size_t offset = destLen + copyLen; + dest[offset] = '\0'; + } +} + +inline void inline_strncpy(char *dest, const char *src, size_t destSize) { + if (src != dest) { + dest[0] = '\0'; + inline_strncat(dest, src, destSize); + } +} + +#endif diff --git a/src/d/d_rawarchive.cpp b/src/d/d_rawarchive.cpp index 888ade40..75043513 100644 --- a/src/d/d_rawarchive.cpp +++ b/src/d/d_rawarchive.cpp @@ -1,8 +1,6 @@ #include +#include #include -// clang-format off -#include -// clang-format on class UnkManager { public: @@ -133,32 +131,6 @@ bool dRawArcEntry_c::loadArcFromDiskChecked(const char *fileName, const char *di return false; } -// Regswap -inline void inline_strncat(char *dest, const char *src, size_t destSize) { - if (src != nullptr) { - size_t destLen = strlen(dest); - size_t copyLen = strlen(src); - - // Make sure copy length isnt more than destination length - if (destLen + copyLen + 1 >= destSize) { - copyLen = destSize - destLen - 1; - } - - strncpy(dest + destLen, src, copyLen); - - // make sure string is null terminated - size_t offset = destLen + copyLen; - dest[offset] = '\0'; - } -} - -inline void inline_strncpy(char *dest, const char *src, size_t destSize) { - if (src != dest) { - dest[0] = '\0'; - inline_strncat(dest, src, destSize); - } -} - bool dRawArcEntry_c::loadArcFromDisk(const char *arcName, const char *arcPath, u8 mountDirection, EGG::Heap *heap) { mpDvdReq = mDvd_mountMemArchive_c::create(arcPath, mountDirection, heap); if (mpDvdReq == nullptr) { diff --git a/src/toBeSorted/file_manager.cpp b/src/toBeSorted/file_manager.cpp index d6bbd9a9..33f5ec69 100644 --- a/src/toBeSorted/file_manager.cpp +++ b/src/toBeSorted/file_manager.cpp @@ -1,8 +1,7 @@ #include "toBeSorted/file_manager.h" #include "f/f_base.h" #include -// #include "libc.h" -#include +#include // This class here makes no sense and the name might // be a total misnomer, but this gets the sinit section correct @@ -142,7 +141,7 @@ inline void strnsth(char *dest, const char *src, size_t max_len) { char buf[0x20]; buf[0] = '\0'; - strnsth(buf, "F405", 0x20); + inline_strncpy(buf, "F405", sizeof(buf)); file->setAreaT1(buf); file->room_id_t1 = 0; file->forced_layer_t1 = 0;