combase: Implement WindowsTrimStringEnd.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
211b8b5f61
commit
441c8dcc65
|
@ -23,5 +23,5 @@
|
||||||
@ stdcall WindowsStringHasEmbeddedNull(ptr ptr) combase.WindowsStringHasEmbeddedNull
|
@ stdcall WindowsStringHasEmbeddedNull(ptr ptr) combase.WindowsStringHasEmbeddedNull
|
||||||
@ stdcall WindowsSubstring(ptr long ptr) combase.WindowsSubstring
|
@ stdcall WindowsSubstring(ptr long ptr) combase.WindowsSubstring
|
||||||
@ stdcall WindowsSubstringWithSpecifiedLength(ptr long long ptr) combase.WindowsSubstringWithSpecifiedLength
|
@ stdcall WindowsSubstringWithSpecifiedLength(ptr long long ptr) combase.WindowsSubstringWithSpecifiedLength
|
||||||
@ stub WindowsTrimStringEnd
|
@ stdcall WindowsTrimStringEnd(ptr ptr ptr) combase.WindowsTrimStringEnd
|
||||||
@ stdcall WindowsTrimStringStart(ptr ptr ptr) combase.WindowsTrimStringStart
|
@ stdcall WindowsTrimStringStart(ptr ptr ptr) combase.WindowsTrimStringStart
|
||||||
|
|
|
@ -304,5 +304,5 @@
|
||||||
@ stdcall WindowsStringHasEmbeddedNull(ptr ptr)
|
@ stdcall WindowsStringHasEmbeddedNull(ptr ptr)
|
||||||
@ stdcall WindowsSubstring(ptr long ptr)
|
@ stdcall WindowsSubstring(ptr long ptr)
|
||||||
@ stdcall WindowsSubstringWithSpecifiedLength(ptr long long ptr)
|
@ stdcall WindowsSubstringWithSpecifiedLength(ptr long long ptr)
|
||||||
@ stub WindowsTrimStringEnd
|
@ stdcall WindowsTrimStringEnd(ptr ptr ptr)
|
||||||
@ stdcall WindowsTrimStringStart(ptr ptr ptr)
|
@ stdcall WindowsTrimStringStart(ptr ptr ptr)
|
||||||
|
|
|
@ -433,3 +433,30 @@ HRESULT WINAPI WindowsTrimStringStart(HSTRING str1, HSTRING str2, HSTRING *out)
|
||||||
return start ? WindowsCreateString(&priv1->buffer[start], priv1->length - start, out) :
|
return start ? WindowsCreateString(&priv1->buffer[start], priv1->length - start, out) :
|
||||||
WindowsDuplicateString(str1, out);
|
WindowsDuplicateString(str1, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***********************************************************************
|
||||||
|
* WindowsTrimStringEnd (combase.@)
|
||||||
|
*/
|
||||||
|
HRESULT WINAPI WindowsTrimStringEnd(HSTRING str1, HSTRING str2, HSTRING *out)
|
||||||
|
{
|
||||||
|
struct hstring_private *priv1 = impl_from_HSTRING(str1);
|
||||||
|
struct hstring_private *priv2 = impl_from_HSTRING(str2);
|
||||||
|
UINT32 len;
|
||||||
|
|
||||||
|
TRACE("(%p, %p, %p)\n", str1, str2, out);
|
||||||
|
|
||||||
|
if (!out || !str2 || !priv2->length)
|
||||||
|
return E_INVALIDARG;
|
||||||
|
if (!str1)
|
||||||
|
{
|
||||||
|
*out = NULL;
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
for (len = priv1->length; len > 0; len--)
|
||||||
|
{
|
||||||
|
if (!memchrW(priv2->buffer, priv1->buffer[len - 1], priv2->length))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return (len < priv1->length) ? WindowsCreateString(priv1->buffer, len, out) :
|
||||||
|
WindowsDuplicateString(str1, out);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue