From f6ab3530101e232da1b6ad6792116dd2685bd922 Mon Sep 17 00:00:00 2001 From: Daniel Lehman Date: Fri, 17 Jun 2016 13:35:15 -0700 Subject: [PATCH 2/2] msvcrt: Add _wcsftime_l --- .../api-ms-win-crt-time-l1-1-0.spec | 2 +- dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr120_app/msvcr120_app.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/time.c | 19 ++++++++++++++----- dlls/ucrtbase/ucrtbase.spec | 2 +- 9 files changed, 22 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 fc39007..5da3851 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 @@ -54,7 +54,7 @@ @ cdecl _utime64(str ptr) ucrtbase._utime64 @ cdecl _wasctime(ptr) ucrtbase._wasctime @ cdecl _wasctime_s(ptr long ptr) ucrtbase._wasctime_s -@ stub _wcsftime_l +@ cdecl _wcsftime_l(ptr long wstr ptr ptr) ucrtbase._wcsftime_l @ cdecl _wctime32(ptr) ucrtbase._wctime32 @ cdecl _wctime32_s(ptr long ptr) ucrtbase._wctime32_s @ cdecl _wctime64(ptr) ucrtbase._wctime64 diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 3cfac96..7e80adc 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1491,7 +1491,7 @@ @ cdecl _wcsdup(wstr) MSVCRT__wcsdup @ cdecl _wcserror(long) MSVCRT__wcserror @ cdecl _wcserror_s(ptr long long) MSVCRT__wcserror_s -@ stub _wcsftime_l +@ cdecl _wcsftime_l(ptr long wstr ptr ptr) MSVCRT__wcsftime_l @ cdecl _wcsicmp(wstr wstr) MSVCRT__wcsicmp @ cdecl _wcsicmp_l(wstr wstr ptr) MSVCRT__wcsicmp_l @ cdecl _wcsicoll(wstr wstr) MSVCRT__wcsicoll diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 2eb5064..5f33acf 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1849,7 +1849,7 @@ @ cdecl _wcsdup(wstr) MSVCRT__wcsdup @ cdecl _wcserror(long) MSVCRT__wcserror @ cdecl _wcserror_s(ptr long long) MSVCRT__wcserror_s -@ stub _wcsftime_l +@ cdecl _wcsftime_l(ptr long wstr ptr ptr) MSVCRT__wcsftime_l @ cdecl _wcsicmp(wstr wstr) MSVCRT__wcsicmp @ cdecl _wcsicmp_l(wstr wstr ptr) MSVCRT__wcsicmp_l @ cdecl _wcsicoll(wstr wstr) MSVCRT__wcsicoll diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 5ba624a..0ac1de8 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1867,7 +1867,7 @@ @ cdecl _wcsdup(wstr) MSVCRT__wcsdup @ cdecl _wcserror(long) MSVCRT__wcserror @ cdecl _wcserror_s(ptr long long) MSVCRT__wcserror_s -@ stub _wcsftime_l +@ cdecl _wcsftime_l(ptr long wstr ptr ptr) MSVCRT__wcsftime_l @ cdecl _wcsicmp(wstr wstr) MSVCRT__wcsicmp @ cdecl _wcsicmp_l(wstr wstr ptr) MSVCRT__wcsicmp_l @ cdecl _wcsicoll(wstr wstr) MSVCRT__wcsicoll diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index c7df924..9bf37b4 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -1560,7 +1560,7 @@ @ cdecl _wcsdup(wstr) msvcr120._wcsdup @ cdecl _wcserror(long) msvcr120._wcserror @ cdecl _wcserror_s(ptr long long) msvcr120._wcserror_s -@ stub _wcsftime_l +@ cdecl _wcsftime_l(ptr long wstr ptr ptr) msvcr120._wcsftime_l @ cdecl _wcsicmp(wstr wstr) msvcr120._wcsicmp @ cdecl _wcsicmp_l(wstr wstr ptr) msvcr120._wcsicmp_l @ cdecl _wcsicoll(wstr wstr) msvcr120._wcsicoll diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 069bc9f..aae7fc1 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1170,7 +1170,7 @@ @ cdecl _wcsdup(wstr) MSVCRT__wcsdup @ cdecl _wcserror(long) MSVCRT__wcserror @ cdecl _wcserror_s(ptr long long) MSVCRT__wcserror_s -@ stub _wcsftime_l +@ cdecl _wcsftime_l(ptr long wstr ptr ptr) MSVCRT__wcsftime_l @ cdecl _wcsicmp(wstr wstr) MSVCRT__wcsicmp @ cdecl _wcsicmp_l(wstr wstr ptr) MSVCRT__wcsicmp_l @ cdecl _wcsicoll(wstr wstr) MSVCRT__wcsicoll diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index b30cd4d..d9fe6bb 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1146,7 +1146,7 @@ @ cdecl _wcsdup(wstr) MSVCRT__wcsdup @ cdecl _wcserror(long) MSVCRT__wcserror @ cdecl _wcserror_s(ptr long long) MSVCRT__wcserror_s -@ stub _wcsftime_l +@ cdecl _wcsftime_l(ptr long wstr ptr ptr) MSVCRT__wcsftime_l @ cdecl _wcsicmp(wstr wstr) MSVCRT__wcsicmp @ cdecl _wcsicmp_l(wstr wstr ptr) MSVCRT__wcsicmp_l @ cdecl _wcsicoll(wstr wstr) MSVCRT__wcsicoll diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c index 16f1da9..67d35f9 100644 --- a/dlls/msvcrt/time.c +++ b/dlls/msvcrt/time.c @@ -1253,15 +1253,15 @@ MSVCRT_size_t CDECL MSVCRT__strftime_l( char *str, MSVCRT_size_t max, const char } /********************************************************************* - * wcsftime (MSVCRT.@) + * _wcsftime_l (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 ) +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 ) { char *s, *fmt; MSVCRT_size_t len; - TRACE("%p %ld %s %p\n", str, max, debugstr_w(format), mstm ); + TRACE("%p %ld %s %p %p\n", str, max, debugstr_w(format), mstm, loc); len = WideCharToMultiByte( CP_UNIXCP, 0, format, -1, NULL, 0, NULL, NULL ); if (!(fmt = MSVCRT_malloc( len ))) return 0; @@ -1269,7 +1269,7 @@ MSVCRT_size_t CDECL MSVCRT_wcsftime( MSVCRT_wchar_t *str, MSVCRT_size_t max, if ((s = MSVCRT_malloc( max*4 ))) { - if (!MSVCRT_strftime( s, max*4, fmt, mstm )) s[0] = 0; + if (!MSVCRT__strftime_l( s, max*4, fmt, mstm, loc )) s[0] = 0; len = MultiByteToWideChar( CP_UNIXCP, 0, s, -1, str, max ); if (len) len--; MSVCRT_free( s ); @@ -1280,6 +1280,15 @@ MSVCRT_size_t CDECL MSVCRT_wcsftime( MSVCRT_wchar_t *str, MSVCRT_size_t max, return len; } +/********************************************************************* + * 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); +} + static char* asctime_buf(char *buf, const struct MSVCRT_tm *mstm) { static const char wday[7][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index a0260d3..7582ba9 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -2016,7 +2016,7 @@ @ cdecl _wcsdup(wstr) MSVCRT__wcsdup @ cdecl _wcserror(long) MSVCRT__wcserror @ cdecl _wcserror_s(ptr long long) MSVCRT__wcserror_s -@ stub _wcsftime_l +@ cdecl _wcsftime_l(ptr long wstr ptr ptr) MSVCRT__wcsftime_l @ cdecl _wcsicmp(wstr wstr) MSVCRT__wcsicmp @ cdecl _wcsicmp_l(wstr wstr ptr) MSVCRT__wcsicmp_l @ cdecl _wcsicoll(wstr wstr) MSVCRT__wcsicoll -- 1.9.5