Eryk Wieliczko : msvcrt: Implement _ctime32/64_s.
Alexandre Julliard
julliard at winehq.org
Tue Nov 23 09:38:23 CST 2010
Module: wine
Branch: master
Commit: 504e68ac2491e5743b257337633a383e11fa05d4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=504e68ac2491e5743b257337633a383e11fa05d4
Author: Eryk Wieliczko <ewdevel at gmail.com>
Date: Sat Nov 20 14:49:53 2010 +0100
msvcrt: Implement _ctime32/64_s.
---
dlls/msvcr100/msvcr100.spec | 4 +-
dlls/msvcr80/msvcr80.spec | 4 +-
dlls/msvcr90/msvcr90.spec | 4 +-
dlls/msvcrt/msvcrt.spec | 4 +-
dlls/msvcrt/time.c | 44 +++++++++++++++++++++++++++++++++++++++++++
5 files changed, 52 insertions(+), 8 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 6e860e8..a305cb2 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -560,9 +560,9 @@
@ varargs _cscanf_s(str) msvcrt._cscanf_s
@ varargs _cscanf_s_l(str ptr) msvcrt._cscanf_s_l
@ cdecl _ctime32(ptr) msvcrt._ctime32
-@ stub _ctime32_s
+@ cdecl _ctime32_s(str long ptr) msvcrt._ctime32_s
@ cdecl _ctime64(ptr) msvcrt._ctime64
-@ stub _ctime64_s
+@ cdecl _ctime64_s(str long ptr) msvcrt._ctime64_s
@ cdecl _cwait(ptr long long) msvcrt._cwait
@ varargs _cwprintf(wstr) msvcrt._cwprintf
@ stub _cwprintf_l
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index 17785be..36f522c 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -399,9 +399,9 @@
@ varargs _cscanf_s(str) msvcrt._cscanf_s
@ varargs _cscanf_s_l(str ptr) msvcrt._cscanf_s_l
@ cdecl _ctime32(ptr) msvcrt._ctime32
-@ stub _ctime32_s
+@ cdecl _ctime32_s(str ptr long) msvcrt._ctime32_s
@ cdecl _ctime64(ptr) msvcrt._ctime64
-@ stub _ctime64_s
+@ cdecl _ctime64_s(str ptr long) msvcrt._ctime64_s
@ cdecl _cwait(ptr long long) msvcrt._cwait
@ varargs _cwprintf(wstr) msvcrt._cwprintf
@ stub _cwprintf_l
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 663e1b7..33bfb33 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -391,9 +391,9 @@
@ varargs _cscanf_s(str) msvcrt._cscanf_s
@ varargs _cscanf_s_l(str ptr) msvcrt._cscanf_s_l
@ cdecl _ctime32(ptr) msvcrt._ctime32
-@ stub _ctime32_s
+@ cdecl _ctime32_s(str long ptr) msvcrt._ctime32_s
@ cdecl _ctime64(ptr) msvcrt._ctime64
-@ stub _ctime64_s
+@ cdecl _ctime64_s(str long ptr) msvcrt._ctime64_s
@ cdecl _cwait(ptr long long) msvcrt._cwait
@ varargs _cwprintf(wstr) msvcrt._cwprintf
@ stub _cwprintf_l
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 3db6fa4..e65c152 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -356,9 +356,9 @@
@ varargs _cscanf_s(str)
@ varargs _cscanf_s_l(str ptr)
@ cdecl _ctime32(ptr) MSVCRT__ctime32
-# stub _ctime32_s
+@ cdecl _ctime32_s(str long ptr) MSVCRT__ctime32_s
@ cdecl _ctime64(ptr) MSVCRT__ctime64
-# stub _ctime64_s
+@ cdecl _ctime64_s(str long ptr) MSVCRT__ctime64_s
@ extern _ctype MSVCRT__ctype
@ cdecl _cwait(ptr long long)
@ varargs _cwprintf(wstr)
diff --git a/dlls/msvcrt/time.c b/dlls/msvcrt/time.c
index b345a7f..7ccdc7d 100644
--- a/dlls/msvcrt/time.c
+++ b/dlls/msvcrt/time.c
@@ -902,6 +902,28 @@ char * CDECL MSVCRT__ctime64(const MSVCRT___time64_t *time)
}
/*********************************************************************
+ * _ctime64_s (MSVCRT.@)
+ */
+int CDECL MSVCRT__ctime64_s(char *res, MSVCRT_size_t len, const MSVCRT___time64_t *time)
+{
+ struct MSVCRT_tm *t;
+ if( !MSVCRT_CHECK_PMT( res != NULL ) || !MSVCRT_CHECK_PMT( len >= 26 ) )
+ {
+ *MSVCRT__errno() = MSVCRT_EINVAL;
+ return MSVCRT_EINVAL;
+ }
+ res[0] = '\0';
+ if( !MSVCRT_CHECK_PMT( time != NULL ) || !MSVCRT_CHECK_PMT( time > 0 ) )
+ {
+ *MSVCRT__errno() = MSVCRT_EINVAL;
+ return MSVCRT_EINVAL;
+ }
+ t = MSVCRT__localtime64( time );
+ strcpy( res, MSVCRT_asctime( t ) );
+ return 0;
+}
+
+/*********************************************************************
* _ctime32 (MSVCRT.@)
*/
char * CDECL MSVCRT__ctime32(const MSVCRT___time32_t *time)
@@ -913,6 +935,28 @@ char * CDECL MSVCRT__ctime32(const MSVCRT___time32_t *time)
}
/*********************************************************************
+ * _ctime32_s (MSVCRT.@)
+ */
+int CDECL MSVCRT__ctime32_s(char *res, MSVCRT_size_t len, const MSVCRT___time32_t *time)
+{
+ struct MSVCRT_tm *t;
+ if( !MSVCRT_CHECK_PMT( res != NULL ) || !MSVCRT_CHECK_PMT( len >= 26 ) )
+ {
+ *MSVCRT__errno() = MSVCRT_EINVAL;
+ return MSVCRT_EINVAL;
+ }
+ res[0] = '\0';
+ if( !MSVCRT_CHECK_PMT( time != NULL ) || !MSVCRT_CHECK_PMT( time > 0 ) )
+ {
+ *MSVCRT__errno() = MSVCRT_EINVAL;
+ return MSVCRT_EINVAL;
+ }
+ t = MSVCRT__localtime32( time );
+ strcpy( res, MSVCRT_asctime( t ) );
+ return 0;
+}
+
+/*********************************************************************
* ctime (MSVCRT.@)
*/
#ifdef _WIN64
More information about the wine-cvs
mailing list