Module: wine Branch: master Commit: ed3d0e00aeca051b648af31baa897ff9e0a90776 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ed3d0e00aeca051b648af31baa...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Oct 2 10:34:07 2012 +0200
vbscript: Added RTrim implementation.
---
dlls/vbscript/global.c | 25 +++++++++++++++++++++++-- dlls/vbscript/tests/api.vbs | 12 ++++++++++++ 2 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index 6db59ca..e2319ae 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -879,8 +879,29 @@ static HRESULT Global_LTrim(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VAR
static HRESULT Global_RTrim(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + BSTR str, conv_str = NULL; + WCHAR *ptr; + HRESULT hres; + + TRACE("%s\n", debugstr_variant(arg)); + + if(V_VT(arg) == VT_BSTR) { + str = V_BSTR(arg); + }else { + hres = to_string(arg, &conv_str); + if(FAILED(hres)) + return hres; + str = conv_str; + } + + for(ptr = str+SysStringLen(str); ptr-1 > str && isspaceW(*(ptr-1)); ptr--); + + str = SysAllocStringLen(str, ptr-str); + SysFreeString(conv_str); + if(!str) + return E_OUTOFMEMORY; + + return return_bstr(res, str); }
static HRESULT Global_Trim(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs index b64043d..6bcded8 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -254,6 +254,18 @@ Sub TestRound(val, exval, vt) Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val))) End Sub
+Sub TestRTrim(str, exstr) + Call ok(RTrim(str) = exstr, "RTrim(" & str & ") = " & RTrim(str)) +End Sub + +TestRTrim " test ", " test" +TestRTrim "test ", "test" +TestRTrim " test", " test" +TestRTrim "test", "test" +TestRTrim "", "" +TestRTrim 123, "123" +if isEnglishLang then TestRTrim true, "True" + TestRound 3, 3, "VT_I2" TestRound 3.3, 3, "VT_R8" TestRound 3.8, 4, "VT_R8"