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