diff options
Diffstat (limited to 'Added-function-_wcsncmp.patch')
-rw-r--r-- | Added-function-_wcsncmp.patch | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Added-function-_wcsncmp.patch b/Added-function-_wcsncmp.patch new file mode 100644 index 0000000..cef8a66 --- /dev/null +++ b/Added-function-_wcsncmp.patch @@ -0,0 +1,62 @@ +From e482b394efc371412ce659b731a9b1e1d73bdf0e Mon Sep 17 00:00:00 2001 +From: akallabeth <akallabeth@posteo.net> +Date: Mon, 24 Oct 2022 10:42:56 +0200 +Subject: [PATCH] Added function _wcsncmp + +* Compare WCHAR strings up to n characters + +(cherry picked from commit 8178ed26a459356ece17414c6e871a7e0735a4ec) +--- + winpr/include/winpr/string.h | 2 ++ + winpr/libwinpr/crt/string.c | 15 ++++++++++++++- + 2 files changed, 16 insertions(+), 1 deletion(-) + +diff --git a/winpr/include/winpr/string.h b/winpr/include/winpr/string.h +index 8ce83bc1d..3b907c444 100644 +--- a/winpr/include/winpr/string.h ++++ b/winpr/include/winpr/string.h +@@ -57,6 +57,7 @@ extern "C" + WINPR_API int _strnicmp(const char* string1, const char* string2, size_t count); + + WINPR_API int _wcscmp(const WCHAR* string1, const WCHAR* string2); ++ WINPR_API int _wcsncmp(const WCHAR* string1, const WCHAR* string2, size_t count); + + WINPR_API size_t _wcslen(const WCHAR* str); + WINPR_API size_t _wcsnlen(const WCHAR* str, size_t maxNumberOfElements); +@@ -70,6 +71,7 @@ extern "C" + #else + + #define _wcscmp wcscmp ++#define _wcsncmp wcsncmp + #define _wcslen wcslen + #define _wcsnlen wcsnlen + #define _wcschr wcschr +diff --git a/winpr/libwinpr/crt/string.c b/winpr/libwinpr/crt/string.c +index 37fcb4b25..c25ffa279 100644 +--- a/winpr/libwinpr/crt/string.c ++++ b/winpr/libwinpr/crt/string.c +@@ -90,7 +90,20 @@ int _wcscmp(const WCHAR* string1, const WCHAR* string2) + + Data_Read_UINT16(string1, value1); + Data_Read_UINT16(string2, value2); +- return value1 - value2; ++ return (int)value1 - value2; ++} ++ ++int _wcsncmp(const WCHAR* string1, const WCHAR* string2, size_t count) ++{ ++ for (size_t x = 0; x < count; x++) ++ { ++ const WCHAR a = string1[x]; ++ const WCHAR b = string2[x]; ++ ++ if (a != b) ++ return (int)a - b; ++ } ++ return 0; + } + + /* _wcslen -> wcslen */ +-- +2.37.1 + |