Blame SOURCES/winpr-crt-Added-wcsstr-implementation.patch

6fe37b
From ddc6dacd06b41ed5001b1c884b5d5c9e0a70e275 Mon Sep 17 00:00:00 2001
6fe37b
From: akallabeth <akallabeth@posteo.net>
6fe37b
Date: Thu, 10 Nov 2022 15:54:28 +0100
6fe37b
Subject: [PATCH] [winpr, crt] Added wcsstr implementation
6fe37b
6fe37b
(cherry picked from commit 6c034ba6117a4efc9266e845fe9a9a92ed4ee61d)
6fe37b
---
6fe37b
 winpr/include/winpr/string.h |  3 +++
6fe37b
 winpr/libwinpr/crt/string.c  | 20 ++++++++++++++++++++
6fe37b
 2 files changed, 23 insertions(+)
6fe37b
6fe37b
diff --git a/winpr/include/winpr/string.h b/winpr/include/winpr/string.h
6fe37b
index 3b907c444..2d7126210 100644
6fe37b
--- a/winpr/include/winpr/string.h
6fe37b
+++ b/winpr/include/winpr/string.h
6fe37b
@@ -62,6 +62,8 @@ extern "C"
6fe37b
 	WINPR_API size_t _wcslen(const WCHAR* str);
6fe37b
 	WINPR_API size_t _wcsnlen(const WCHAR* str, size_t maxNumberOfElements);
6fe37b
 
6fe37b
+	WINPR_API WCHAR* _wcsstr(const WCHAR* str, const WCHAR* strSearch);
6fe37b
+
6fe37b
 	WINPR_API WCHAR* _wcschr(const WCHAR* str, WCHAR c);
6fe37b
 	WINPR_API WCHAR* _wcsrchr(const WCHAR* str, WCHAR c);
6fe37b
 
6fe37b
@@ -74,6 +76,7 @@ extern "C"
6fe37b
 #define _wcsncmp wcsncmp
6fe37b
 #define _wcslen wcslen
6fe37b
 #define _wcsnlen wcsnlen
6fe37b
+#define _wcsstr wcsstr
6fe37b
 #define _wcschr wcschr
6fe37b
 #define _wcsrchr wcsrchr
6fe37b
 
6fe37b
diff --git a/winpr/libwinpr/crt/string.c b/winpr/libwinpr/crt/string.c
6fe37b
index 5dcf4b3f1..efd7d166c 100644
6fe37b
--- a/winpr/libwinpr/crt/string.c
6fe37b
+++ b/winpr/libwinpr/crt/string.c
6fe37b
@@ -147,6 +147,26 @@ size_t _wcsnlen(const WCHAR* str, size_t max)
6fe37b
 	return x;
6fe37b
 }
6fe37b
 
6fe37b
+/* _wcsstr -> wcsstr */
6fe37b
+
6fe37b
+WCHAR* _wcsstr(const WCHAR* str, const WCHAR* strSearch)
6fe37b
+{
6fe37b
+	assert(str);
6fe37b
+	assert(strSearch);
6fe37b
+
6fe37b
+	if (strSearch[0] == '\0')
6fe37b
+		return str;
6fe37b
+
6fe37b
+	const size_t searchLen = _wcslen(strSearch);
6fe37b
+	while (*str)
6fe37b
+	{
6fe37b
+		if (_wcsncmp(str, strSearch, searchLen) == 0)
6fe37b
+			return str;
6fe37b
+		str++;
6fe37b
+	}
6fe37b
+	return NULL;
6fe37b
+}
6fe37b
+
6fe37b
 /* _wcschr -> wcschr */
6fe37b
 
6fe37b
 WCHAR* _wcschr(const WCHAR* str, WCHAR c)
6fe37b
-- 
6fe37b
2.37.1
6fe37b