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