diff --git a/src/core/hle/libraries/libc/libc.cpp b/src/core/hle/libraries/libc/libc.cpp index ff64d4858..f0efa0051 100644 --- a/src/core/hle/libraries/libc/libc.cpp +++ b/src/core/hle/libraries/libc/libc.cpp @@ -432,6 +432,8 @@ void libcSymbolsRegister(Loader::SymbolsResolver* sym) { LIB_FUNCTION("DfivPArhucg", "libc", 1, "libc", 1, 1, memcmp); LIB_FUNCTION("Q3VBxCXhUHs", "libc", 1, "libc", 1, 1, memcpy); LIB_FUNCTION("8zTFvBIAIN8", "libc", 1, "libc", 1, 1, memset); + LIB_FUNCTION("aesyjrHVWy4", "libc", 1, "libc", 1, 1, strncmp); + LIB_FUNCTION("9yDWMxEFdJU", "libc", 1, "libc", 1, 1, strrchr); // stdio functions LIB_FUNCTION("hcuQgD53UxM", "libc", 1, "libc", 1, 1, printf); diff --git a/src/core/hle/libraries/libc/libc_string.cpp b/src/core/hle/libraries/libc/libc_string.cpp index 3effa7bf8..2700cc751 100644 --- a/src/core/hle/libraries/libc/libc_string.cpp +++ b/src/core/hle/libraries/libc/libc_string.cpp @@ -1,42 +1,29 @@ -#include #include "core/hle/libraries/libc/libc_string.h" +#include + namespace Core::Libraries::LibC { -int PS4_SYSV_ABI memcmp(const void* s1, const void* s2, size_t n) { - return std::memcmp(s1, s2, n); -} +int PS4_SYSV_ABI memcmp(const void* s1, const void* s2, size_t n) { return std::memcmp(s1, s2, n); } -void* PS4_SYSV_ABI memcpy(void* dest, const void* src, size_t n) { - return std::memcpy(dest, src, n); -} +void* PS4_SYSV_ABI memcpy(void* dest, const void* src, size_t n) { return std::memcpy(dest, src, n); } -void* PS4_SYSV_ABI memset(void* s, int c, size_t n) { - return std::memset(s, c, n); -} +void* PS4_SYSV_ABI memset(void* s, int c, size_t n) { return std::memset(s, c, n); } -int PS4_SYSV_ABI strcmp(const char* str1, const char* str2) { - return std::strcmp(str1, str2); -} +int PS4_SYSV_ABI strcmp(const char* str1, const char* str2) { return std::strcmp(str1, str2); } -char* PS4_SYSV_ABI strncpy(char* dest, const char* src, size_t count) { - return std::strncpy(dest, src, count); -} +char* PS4_SYSV_ABI strncpy(char* dest, const char* src, size_t count) { return std::strncpy(dest, src, count); } -void* PS4_SYSV_ABI memmove(void* dest, const void* src, std::size_t count) { - return std::memmove(dest, src, count); -} +void* PS4_SYSV_ABI memmove(void* dest, const void* src, std::size_t count) { return std::memmove(dest, src, count); } -char* PS4_SYSV_ABI strcpy(char* dest, const char* src) { - return std::strcpy(dest, src); -} +char* PS4_SYSV_ABI strcpy(char* dest, const char* src) { return std::strcpy(dest, src); } -char* PS4_SYSV_ABI strcat(char* dest, const char* src) { - return std::strcat(dest, src); -} +char* PS4_SYSV_ABI strcat(char* dest, const char* src) { return std::strcat(dest, src); } -size_t PS4_SYSV_ABI strlen(const char* str) { - return std::strlen(str); -} +size_t PS4_SYSV_ABI strlen(const char* str) { return std::strlen(str); } -} // namespace Core::Libraries::LibC +int PS4_SYSV_ABI strncmp(const char* str1, const char* str2, size_t num) { return std::strncmp(str1, str2, num); } + +char* PS4_SYSV_ABI strrchr(char* str, int character) { return (char*)std::strrchr(str, character); } + +} // namespace Core::Libraries::LibC diff --git a/src/core/hle/libraries/libc/libc_string.h b/src/core/hle/libraries/libc/libc_string.h index b5c29e230..c6e86c722 100644 --- a/src/core/hle/libraries/libc/libc_string.h +++ b/src/core/hle/libraries/libc/libc_string.h @@ -1,6 +1,7 @@ #pragma once #include + #include "common/types.h" namespace Core::Libraries::LibC { @@ -14,5 +15,7 @@ void* PS4_SYSV_ABI memmove(void* dest, const void* src, std::size_t count); char* PS4_SYSV_ABI strcpy(char* destination, const char* source); char* PS4_SYSV_ABI strcat(char* dest, const char* src); size_t PS4_SYSV_ABI strlen(const char* str); +int PS4_SYSV_ABI strncmp(const char* str1, const char* str2, size_t num); +char* PS4_SYSV_ABI strrchr(char* str, int character); -} // namespace Core::Libraries::LibC +} // namespace Core::Libraries::LibC