From 71a4a1d43a5b50e5b68b99b16617148a44027334 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 2 Oct 2012 10:33:50 +0200 Subject: [PATCH] vbscript: Added LTrim() 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 e6211b7f73a..6db59ca38d8 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -852,8 +852,29 @@ static HRESULT Global_UCase(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VAR static HRESULT Global_LTrim(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; *ptr && isspaceW(*ptr); ptr++); + + str = SysAllocString(ptr); + SysFreeString(conv_str); + if(!str) + return E_OUTOFMEMORY; + + return return_bstr(res, str); } static HRESULT Global_RTrim(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 7553d59243f..b64043dcc15 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -237,6 +237,18 @@ TestTrim "", "" TestTrim 123, "123" if isEnglishLang then TestTrim true, "True" +Sub TestLTrim(str, exstr) + Call ok(LTrim(str) = exstr, "LTrim(" & str & ") = " & LTrim(str)) +End Sub + +TestLTrim " test ", "test " +TestLTrim "test ", "test " +TestLTrim " test", "test" +TestLTrim "test", "test" +TestLTrim "", "" +TestLTrim 123, "123" +if isEnglishLang then TestLTrim true, "True" + Sub TestRound(val, exval, vt) Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val)) Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))