Piotr Caban : msvcr: Add _Wcsftime implementation.
Alexandre Julliard
julliard at winehq.org
Thu Jul 20 12:11:27 CDT 2017
Module: wine
Branch: stable
Commit: fd4ea8ea6a32dd1b6643efc474bb78bf60c23be3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=fd4ea8ea6a32dd1b6643efc474bb78bf60c23be3
Author: Piotr Caban <piotr at codeweavers.com>
Date: Tue Mar 14 17:41:59 2017 +0100
msvcr: Add _Wcsftime implementation.
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit a6400b9fe7e6247de21c35a8ec73dba629c6dd52)
Signed-off-by: Michael Stefaniuc <mstefani at 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
More information about the wine-cvs
mailing list