From fcc9b7171a81b3257d0803ab7258be3ff98cd182 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Mon, 30 Sep 2019 20:19:31 +0200 Subject: [PATCH] vbscript: Add Day function implementation. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/vbscript/global.c | 22 ++++++++++++++++++++-- dlls/vbscript/tests/api.vbs | 3 +++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index 9b2ce3d4a77..5287e27f67d 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -198,6 +198,19 @@ static HRESULT to_string(VARIANT *v, BSTR *ret) return S_OK; } +static HRESULT to_system_time(VARIANT *v, SYSTEMTIME *st) +{ + VARIANT date; + HRESULT hres; + + V_VT(&date) = VT_EMPTY; + hres = VariantChangeType(&date, v, 0, VT_DATE); + if(FAILED(hres)) + return hres; + + return VariantTimeToSystemTime(V_DATE(&date), st); +} + static HRESULT set_object_site(script_ctx_t *ctx, IUnknown *obj) { IObjectWithSite *obj_site; @@ -1596,8 +1609,13 @@ static HRESULT Global_Time(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARI static HRESULT Global_Day(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + SYSTEMTIME st; + HRESULT hres; + + TRACE("(%s)\n", debugstr_variant(arg)); + + hres = to_system_time(arg, &st); + return FAILED(hres) ? hres : return_short(res, st.wDay); } static HRESULT Global_Month(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 6cc4984bfdd..9378df752a5 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -1442,6 +1442,9 @@ Call ok(getVT(Log(CByte(2))) = "VT_R8", "getVT(Log(CByte(2))) = " & getVT(Log(CB Call ok(getVT(Date) = "VT_DATE", "getVT(Date) = " & getVT(Date)) Call ok(getVT(Time) = "VT_DATE", "getVT(Time) = " & getVT(Time)) +Call ok(getVT(Day(now)) = "VT_I2", "getVT(Day(now)) = " & getVT(Day(now))) +Call ok(Day(2) = 1, "Day(time) = " & Day(2)) + Sub testRGBError(arg1, arg2, arg3, error_num) on error resume next Dim x