Module: wine Branch: master Commit: f0122420373d8182c9310de926113470cdb2471d URL: http://source.winehq.org/git/wine.git/?a=commit;h=f0122420373d8182c9310de926...
Author: André Hentschel nerv@dawncrow.de Date: Wed Nov 30 02:51:43 2011 +0100
msvcrt: Implement _wasctime_s.
---
dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/msvcrt.spec | 2 +- dlls/msvcrt/time.c | 26 ++++++++++++++++++++++++++ 5 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index b7106b7..1760a1a 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1277,7 +1277,7 @@ @ cdecl _waccess(wstr long) msvcrt._waccess @ cdecl _waccess_s(wstr long) msvcrt._waccess_s @ cdecl _wasctime(ptr) msvcrt._wasctime -@ stub _wasctime_s +@ cdecl _wasctime_s(ptr long ptr) msvcrt._wasctime_s @ cdecl _wassert(wstr wstr long) msvcrt._wassert @ cdecl _wchdir(wstr) msvcrt._wchdir @ cdecl _wchmod(wstr long) msvcrt._wchmod diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 0313947..503864f 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -1130,7 +1130,7 @@ @ cdecl _waccess(wstr long) msvcrt._waccess @ cdecl _waccess_s(wstr long) msvcrt._waccess_s @ cdecl _wasctime(ptr) msvcrt._wasctime -@ stub _wasctime_s +@ cdecl _wasctime_s(ptr long ptr) msvcrt._wasctime_s @ cdecl _wassert(wstr wstr long) msvcrt._wassert @ cdecl _wchdir(wstr) msvcrt._wchdir @ cdecl _wchmod(wstr long) msvcrt._wchmod diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 6856d17..7976a0f 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -1124,7 +1124,7 @@ @ cdecl _waccess(wstr long) msvcrt._waccess @ cdecl _waccess_s(wstr long) msvcrt._waccess_s @ cdecl _wasctime(ptr) msvcrt._wasctime -@ stub _wasctime_s +@ cdecl _wasctime_s(ptr long ptr) msvcrt._wasctime_s @ cdecl _wassert(wstr wstr long) msvcrt._wassert @ cdecl _wchdir(wstr) msvcrt._wchdir @ cdecl _wchmod(wstr long) msvcrt._wchmod diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 2b6dda2..dfd3a07 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -1060,7 +1060,7 @@ @ cdecl _waccess(wstr long) MSVCRT__waccess @ cdecl _waccess_s(wstr long) @ cdecl _wasctime(ptr) MSVCRT__wasctime -# stub _wasctime_s(ptr long ptr) +@ cdecl _wasctime_s(ptr long ptr) MSVCRT__wasctime_s @ cdecl _wassert(wstr wstr long) MSVCRT__wassert @ cdecl _wchdir(wstr) MSVCRT__wchdir @ cdecl _wchmod(wstr long) MSVCRT__wchmod diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c index adf6a1d..f9de5c5 100644 --- a/dlls/msvcrt/time.c +++ b/dlls/msvcrt/time.c @@ -36,6 +36,7 @@ #include "winbase.h" #include "winnls.h" #include "wine/debug.h" +#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
@@ -950,6 +951,31 @@ MSVCRT_wchar_t * CDECL MSVCRT__wasctime(const struct MSVCRT_tm *mstm) }
/********************************************************************* + * _wasctime_s (MSVCRT.@) + */ +int CDECL MSVCRT__wasctime_s(MSVCRT_wchar_t* time, MSVCRT_size_t size, const struct MSVCRT_tm *mstm) +{ + WCHAR* asc; + unsigned int len; + + if (!MSVCRT_CHECK_PMT(time != NULL) || !MSVCRT_CHECK_PMT(mstm != NULL)) { + *MSVCRT__errno() = MSVCRT_EINVAL; + return MSVCRT_EINVAL; + } + + asc = MSVCRT__wasctime(mstm); + len = (strlenW(asc) + 1) * sizeof(WCHAR); + + if(!MSVCRT_CHECK_PMT(size >= len)) { + *MSVCRT__errno() = MSVCRT_ERANGE; + return MSVCRT_ERANGE; + } + + strcpyW(time, asc); + return 0; +} + +/********************************************************************* * _ctime64 (MSVCRT.@) */ char * CDECL MSVCRT__ctime64(const MSVCRT___time64_t *time)