Comctl32.StrStrIW implementation
Robert Shearman
R.J.Shearman at warwick.ac.uk
Wed Dec 11 16:02:58 CST 2002
StrStrIW is used by native Regedit when searching the registry. This patch
enables this function of Regedit to work.
ChangeLog:
- Implement StrStrIW (find a string inside a string)
-------------- next part --------------
Index: wine/dlls/comctl32/comctl32.spec
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl32.spec,v
retrieving revision 1.36
diff -u -r1.36 comctl32.spec
--- wine/dlls/comctl32/comctl32.spec 4 Nov 2002 23:53:46 -0000 1.36
+++ wine/dlls/comctl32/comctl32.spec 11 Dec 2002 20:27:56 -0000
@@ -74,7 +74,7 @@
360 stdcall -noname StrCmpNW(wstr wstr long) COMCTL32_StrCmpNW
361 stdcall -noname StrCmpNIW(wstr wstr long) COMCTL32_StrCmpNIW
362 stdcall -noname StrStrW(wstr wstr) COMCTL32_StrStrW
-363 stub -noname StrStrIW
+363 stdcall -noname StrStrIW(wstr wstr) COMCTL32_StrStrIW
364 stdcall -noname StrSpnW(wstr wstr) COMCTL32_StrSpnW
365 stdcall -noname StrToIntW(wstr) COMCTL32_StrToIntW
366 stub -noname StrChrIA
Index: wine/dlls/comctl32/comctl32undoc.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/comctl32undoc.c,v
retrieving revision 1.73
diff -u -r1.73 comctl32undoc.c
--- wine/dlls/comctl32/comctl32undoc.c 23 Oct 2002 23:32:19 -0000 1.73
+++ wine/dlls/comctl32/comctl32undoc.c 11 Dec 2002 20:28:01 -0000
@@ -2425,7 +2425,6 @@
return (NULL);
}
-
/**************************************************************************
* StrToIntA [COMCTL32.357] Converts a string to a signed integer.
*/
@@ -2434,6 +2433,38 @@
COMCTL32_StrToIntA (LPSTR lpString)
{
return atoi(lpString);
+}
+
+/**************************************************************************
+ * StrStrIW [COMCTL32.363]
+ */
+
+LPWSTR WINAPI
+COMCTL32_StrStrIW (LPCWSTR lpStr1, LPCWSTR lpStr2)
+{
+ INT len1, len2, i;
+ WCHAR first;
+
+ if (*lpStr2 == 0)
+ return ((LPWSTR)lpStr1);
+ len1 = 0;
+ while (lpStr1[len1] != 0) ++len1;
+ len2 = 0;
+ while (lpStr2[len2] != 0) ++len2;
+ if (len2 == 0)
+ return ((LPWSTR)(lpStr1 + len1));
+ first = towlower (*lpStr2);
+ while (len1 >= len2) {
+ if (towlower(*lpStr1) == first) {
+ for (i = 1; i < len2; ++i)
+ if (towlower (lpStr1[i]) != towlower(lpStr2[i]))
+ break;
+ if (i >= len2)
+ return ((LPWSTR)lpStr1);
+ }
+ ++lpStr1; --len1;
+ }
+ return (NULL);
}
/**************************************************************************
More information about the wine-patches
mailing list