Piotr Caban : msvcrt: Added _ui64toa_s implementation.
Alexandre Julliard
julliard at winehq.org
Wed May 5 11:08:37 CDT 2010
Module: wine
Branch: master
Commit: df038ec544d50888f7e4db717d7e936e1b0db080
URL: http://source.winehq.org/git/wine.git/?a=commit;h=df038ec544d50888f7e4db717d7e936e1b0db080
Author: Piotr Caban <piotr at codeweavers.com>
Date: Wed May 5 13:37:33 2010 +0200
msvcrt: Added _ui64toa_s implementation.
---
dlls/msvcr80/msvcr80.spec | 2 +-
dlls/msvcr90/msvcr90.spec | 2 +-
dlls/msvcrt/msvcrt.spec | 2 +-
dlls/msvcrt/string.c | 38 ++++++++++++++++++++++++++++++++++++++
4 files changed, 41 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index e430401..b2a19c4 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -994,7 +994,7 @@
@ extern _tzname msvcrt._tzname
@ cdecl _tzset() msvcrt._tzset
@ cdecl _ui64toa(long long ptr long) msvcrt._ui64toa
-@ stub _ui64toa_s
+@ cdecl _ui64toa_s(long ptr long long) msvcrt._ui64toa_s
@ cdecl _ui64tow(long long ptr long) msvcrt._ui64tow
@ stub _ui64tow_s
@ cdecl _ultoa(long ptr long) msvcrt._ultoa
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index b09a32d..f41362d 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -981,7 +981,7 @@
@ extern _tzname msvcrt._tzname
@ cdecl _tzset() msvcrt._tzset
@ cdecl _ui64toa(long long ptr long) msvcrt._ui64toa
-@ stub _ui64toa_s
+@ cdecl _ui64toa_s(long ptr long long) msvcrt._ui64toa_s
@ cdecl _ui64tow(long long ptr long) msvcrt._ui64tow
@ stub _ui64tow_s
@ cdecl _ultoa(long ptr long) msvcrt._ultoa
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec
index 42fe133..4334b85 100644
--- a/dlls/msvcrt/msvcrt.spec
+++ b/dlls/msvcrt/msvcrt.spec
@@ -932,7 +932,7 @@
@ extern _tzname MSVCRT__tzname
@ cdecl _tzset() MSVCRT__tzset
@ cdecl _ui64toa(long long ptr long) ntdll._ui64toa
-# stub _ui64toa_s
+@ cdecl _ui64toa_s(long ptr long long) MSVCRT__ui64toa_s
@ cdecl _ui64tow(long long ptr long) ntdll._ui64tow
# stub _ui64tow_s
@ cdecl _ultoa(long ptr long) ntdll._ultoa
diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c
index 35f44ed..e1d9557 100644
--- a/dlls/msvcrt/string.c
+++ b/dlls/msvcrt/string.c
@@ -624,3 +624,41 @@ unsigned __int64 CDECL MSVCRT_strtoui64(const char *nptr, char **endptr, int bas
{
return MSVCRT_strtoui64_l(nptr, endptr, base, NULL);
}
+
+/*********************************************************************
+ * _ui64toa_s (MSVCRT.@)
+ */
+int CDECL MSVCRT__ui64toa_s(unsigned __int64 value, char *str,
+ MSVCRT_size_t size, int radix)
+{
+ char buffer[65], *pos;
+ int digit;
+
+ if(!str || radix<2 || radix>36) {
+ MSVCRT__invalid_parameter(NULL, NULL, NULL, 0, 0);
+ *MSVCRT__errno() = MSVCRT_EINVAL;
+ return MSVCRT_EINVAL;
+ }
+
+ pos = buffer+64;
+ *pos = '\0';
+
+ do {
+ digit = value%radix;
+ value /= radix;
+
+ if(digit < 10)
+ *--pos = '0'+digit;
+ else
+ *--pos = 'a'+digit-10;
+ }while(value != 0);
+
+ if(buffer-pos+65 > size) {
+ MSVCRT__invalid_parameter(NULL, NULL, NULL, 0, 0);
+ *MSVCRT__errno() = MSVCRT_EINVAL;
+ return MSVCRT_EINVAL;
+ }
+
+ memcpy(str, pos, buffer-pos+65);
+ return 0;
+}
More information about the wine-cvs
mailing list