Module: wine Branch: refs/heads/master Commit: 7fe881c7f2712e2e0d39342450470a94855782d3 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=7fe881c7f2712e2e0d393424...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Mar 23 20:35:52 2006 +0100
msvcrt: Implementation of wcsftime (based on a patch by Mike McCormack).
---
dlls/msvcrt/time.c | 24 +++++++++++++++++++++--- 1 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c index 819f905..ba1be48 100644 --- a/dlls/msvcrt/time.c +++ b/dlls/msvcrt/time.c @@ -445,10 +445,28 @@ MSVCRT_size_t MSVCRT_strftime( char *str MSVCRT_size_t MSVCRT_wcsftime( MSVCRT_wchar_t *str, MSVCRT_size_t max, const MSVCRT_wchar_t *format, const struct MSVCRT_tm *mstm ) { - FIXME( "%p, %d, %s, %p - stub\n", str, max, debugstr_w(format), mstm ); + char *s, *fmt; + MSVCRT_size_t len;
- *str = '\0'; - return 0; + TRACE("%p %d %s %p\n", str, max, debugstr_w(format), mstm ); + + len = WideCharToMultiByte( CP_UNIXCP, 0, format, -1, NULL, 0, NULL, NULL ); + if (!(fmt = MSVCRT_malloc( len ))) return 0; + WideCharToMultiByte( CP_UNIXCP, 0, format, -1, fmt, len, NULL, NULL ); + + if ((s = MSVCRT_malloc( max*4 ))) + { + struct tm tm; + msvcrt_tm_to_unix( &tm, mstm ); + if (!strftime( s, max*4, fmt, &tm )) s[0] = 0; + len = MultiByteToWideChar( CP_UNIXCP, 0, s, -1, str, max ); + if (len) len--; + MSVCRT_free( s ); + } + else len = 0; + + MSVCRT_free( fmt ); + return len; }
/*********************************************************************