Module: wine Branch: stable Commit: fd4ea8ea6a32dd1b6643efc474bb78bf60c23be3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=fd4ea8ea6a32dd1b6643efc474...
Author: Piotr Caban piotr@codeweavers.com Date: Tue Mar 14 17:41:59 2017 +0100
msvcr: Add _Wcsftime implementation.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org (cherry picked from commit a6400b9fe7e6247de21c35a8ec73dba629c6dd52) Signed-off-by: Michael Stefaniuc mstefani@winehq.org
---
.../api-ms-win-crt-time-l1-1-0.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr120_app/msvcr120_app.spec | 2 +- dlls/msvcrt/time.c | 33 ++++++++++++++++------ dlls/ucrtbase/ucrtbase.spec | 2 +- 6 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/dlls/api-ms-win-crt-time-l1-1-0/api-ms-win-crt-time-l1-1-0.spec b/dlls/api-ms-win-crt-time-l1-1-0/api-ms-win-crt-time-l1-1-0.spec index 5da3851..463ad7f 100644 --- a/dlls/api-ms-win-crt-time-l1-1-0/api-ms-win-crt-time-l1-1-0.spec +++ b/dlls/api-ms-win-crt-time-l1-1-0/api-ms-win-crt-time-l1-1-0.spec @@ -5,7 +5,7 @@ @ cdecl _W_Getdays() ucrtbase._W_Getdays @ cdecl _W_Getmonths() ucrtbase._W_Getmonths @ cdecl _W_Gettnames() ucrtbase._W_Gettnames -@ stub _Wcsftime +@ cdecl _Wcsftime(ptr long wstr ptr ptr) ucrtbase._Wcsftime @ cdecl __daylight() ucrtbase.__daylight @ cdecl __dstbias() ucrtbase.__dstbias @ cdecl __timezone() ucrtbase.__timezone diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 39a2eef..3eaa90b 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -867,7 +867,7 @@ @ cdecl _W_Getdays() @ cdecl _W_Getmonths() @ cdecl _W_Gettnames() -@ stub _Wcsftime +@ cdecl _Wcsftime(ptr long wstr ptr ptr) @ cdecl _XcptFilter(long ptr) @ cdecl __AdjustPointer(ptr ptr) @ stub __BuildCatchObject diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index d09c711..fa2cca7 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -851,7 +851,7 @@ @ cdecl _W_Getdays() @ cdecl _W_Getmonths() @ cdecl _W_Gettnames() -@ stub _Wcsftime +@ cdecl _Wcsftime(ptr long wstr ptr ptr) @ cdecl _XcptFilter(long ptr) @ cdecl __AdjustPointer(ptr ptr) @ stub __BuildCatchObject diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index d51f5d3..7ecc163 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -845,7 +845,7 @@ @ cdecl _W_Getdays() msvcr120._W_Getdays @ cdecl _W_Getmonths() msvcr120._W_Getmonths @ cdecl _W_Gettnames() msvcr120._W_Gettnames -@ stub _Wcsftime +@ cdecl _Wcsftime(ptr long wstr ptr ptr) msvcr120._Wcsftime @ cdecl _XcptFilter(long ptr) msvcr120._XcptFilter @ cdecl __AdjustPointer(ptr ptr) msvcr120.__AdjustPointer @ stub __BuildCatchObject diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c index b0f5285..c390df6 100644 --- a/dlls/msvcrt/time.c +++ b/dlls/msvcrt/time.c @@ -1263,16 +1263,14 @@ MSVCRT_size_t CDECL MSVCRT_strftime( char *str, MSVCRT_size_t max, const char *f return strftime_helper(str, max, format, mstm, NULL, NULL); }
-/********************************************************************* - * _wcsftime_l (MSVCRT.@) - */ -MSVCRT_size_t CDECL MSVCRT__wcsftime_l( MSVCRT_wchar_t *str, MSVCRT_size_t max, - const MSVCRT_wchar_t *format, const struct MSVCRT_tm *mstm, MSVCRT__locale_t loc ) +static MSVCRT_size_t wcsftime_helper( MSVCRT_wchar_t *str, MSVCRT_size_t max, + const MSVCRT_wchar_t *format, const struct MSVCRT_tm *mstm, + MSVCRT___lc_time_data *time_data, MSVCRT__locale_t loc ) { char *s, *fmt; MSVCRT_size_t len;
- TRACE("%p %ld %s %p %p\n", str, max, debugstr_w(format), mstm, loc); + TRACE("%p %ld %s %p %p %p\n", str, max, debugstr_w(format), mstm, time_data, loc);
len = MSVCRT__wcstombs_l( NULL, format, 0, loc ) + 1; if (!(fmt = MSVCRT_malloc( len ))) return 0; @@ -1280,7 +1278,7 @@ MSVCRT_size_t CDECL MSVCRT__wcsftime_l( MSVCRT_wchar_t *str, MSVCRT_size_t max,
if ((s = MSVCRT_malloc( max*4 ))) { - if (!MSVCRT__strftime_l( s, max*4, fmt, mstm, loc )) s[0] = 0; + if (!strftime_helper( s, max*4, fmt, mstm, time_data, loc )) s[0] = 0; len = MSVCRT__mbstowcs_l( str, s, max, loc ); MSVCRT_free( s ); } @@ -1291,12 +1289,31 @@ MSVCRT_size_t CDECL MSVCRT__wcsftime_l( MSVCRT_wchar_t *str, MSVCRT_size_t max, }
/********************************************************************* + * _wcsftime_l (MSVCRT.@) + */ +MSVCRT_size_t CDECL MSVCRT__wcsftime_l( MSVCRT_wchar_t *str, MSVCRT_size_t max, + const MSVCRT_wchar_t *format, const struct MSVCRT_tm *mstm, MSVCRT__locale_t loc ) +{ + return wcsftime_helper(str, max, format, mstm, NULL, loc); +} + +/********************************************************************* * wcsftime (MSVCRT.@) */ MSVCRT_size_t CDECL MSVCRT_wcsftime( MSVCRT_wchar_t *str, MSVCRT_size_t max, const MSVCRT_wchar_t *format, const struct MSVCRT_tm *mstm ) { - return MSVCRT__wcsftime_l(str, max, format, mstm, NULL); + return wcsftime_helper(str, max, format, mstm, NULL, NULL); +} + +/********************************************************************* + * _Wcsftime (MSVCRT.@) + */ +MSVCRT_size_t CDECL _Wcsftime(MSVCRT_wchar_t *str, MSVCRT_size_t max, + const MSVCRT_wchar_t *format, const struct MSVCRT_tm *mstm, + MSVCRT___lc_time_data *time_data) +{ + return wcsftime_helper(str, max, format, mstm, time_data, NULL); }
static char* asctime_buf(char *buf, const struct MSVCRT_tm *mstm) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index b66a4fe..e57b6d6 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -44,7 +44,7 @@ @ cdecl _W_Getdays() @ cdecl _W_Getmonths() @ cdecl _W_Gettnames() -@ stub _Wcsftime +@ cdecl _Wcsftime(ptr long wstr ptr ptr) @ cdecl __AdjustPointer(ptr ptr) @ stub __BuildCatchObject @ stub __BuildCatchObjectHelper