strtod C compliant aliases git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@5537 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/ChangeLog b/mingw-w64-crt/ChangeLog index e69de29..4fade3e 100644 --- a/mingw-w64-crt/ChangeLog +++ b/mingw-w64-crt/ChangeLog
@@ -0,0 +1,3 @@ +2013-01-12 Jonathan Yong <jon_y@users.sourceforge.net> + + * gdtoa/strtodnrp.c (__mingw_strtod): New, aliased to __strtod.
diff --git a/mingw-w64-crt/gdtoa/strtodnrp.c b/mingw-w64-crt/gdtoa/strtodnrp.c index b7fe8a3..9f13de6 100644 --- a/mingw-w64-crt/gdtoa/strtodnrp.c +++ b/mingw-w64-crt/gdtoa/strtodnrp.c
@@ -80,3 +80,8 @@ u.L[_0] |= 0x80000000L; return u.d; } + +double __cdecl +__mingw_strtod (const char * __restrict__ src, char ** __restrict__ endptr) + __attribute__((alias("__strtod"))); +
diff --git a/mingw-w64-headers/crt/ChangeLog b/mingw-w64-headers/crt/ChangeLog index e69de29..99f00f6 100644 --- a/mingw-w64-headers/crt/ChangeLog +++ b/mingw-w64-headers/crt/ChangeLog
@@ -0,0 +1,15 @@ +2013-01-12 Jonathan Yong <jon_y@users.sourceforge.net> + + * stdlib.h: Define __USE_MINGW_STRTOX if __USE_MINGW_ANSI_STDIO in use. + (strtod): Alias to __mingw_strtod if __USE_MINGW_STRTOX. + (strtof): Likewise to __mingw_strtof. + (strtod): Remove C++ specific inline redirect to __strtod. + (__mingw_strtod): New. + (wcstod): Alias to __mingw_wcstod if __USE_MINGW_STRTOX. + (wcstof): Likewise to __mingw_wcstof. + * wchar.h: Define __USE_MINGW_STRTOX if __USE_MINGW_ANSI_STDIO in use. + (wcstod): Alias to __mingw_wcstod if __USE_MINGW_STRTOX. + (wcstof): Likewise to __mingw_wcstof. + * stdio.h: Remove __mingw_ovr macro definition. Moved. + * _mingw_mac.h: New __mingw_ovr macro. +
diff --git a/mingw-w64-headers/crt/_mingw_mac.h b/mingw-w64-headers/crt/_mingw_mac.h index 0f736cb..0d86c76 100644 --- a/mingw-w64-headers/crt/_mingw_mac.h +++ b/mingw-w64-headers/crt/_mingw_mac.h
@@ -229,5 +229,14 @@ # define __MINGW_ATTRIB_DEPRECATED_SEC_WARN #endif +#undef __mingw_ovr +#ifdef __cplusplus +#define __mingw_ovr inline __cdecl +#elif defined (__GNUC__) +#define __mingw_ovr static __attribute__ ((__unused__)) __inline__ __cdecl +#else +#define __mingw_ovr static __cdecl +#endif + #endif /* _INC_CRTDEFS_MACRO */
diff --git a/mingw-w64-headers/crt/stdio.h b/mingw-w64-headers/crt/stdio.h index 129c63e..01d5688 100644 --- a/mingw-w64-headers/crt/stdio.h +++ b/mingw-w64-headers/crt/stdio.h
@@ -187,15 +187,6 @@ __attribute__((__format__ (gnu_printf, 2, 0))) __attribute__((nonnull (1,2))) int __cdecl __mingw_vasprintf(char ** __restrict__ , const char * __restrict__ , va_list) __MINGW_NOTHROW; -#undef __mingw_ovr -#ifdef __cplusplus -#define __mingw_ovr inline __cdecl -#elif defined (__GNUC__) -#define __mingw_ovr static __attribute__ ((__unused__)) __inline__ __cdecl -#else -#define __mingw_ovr static __cdecl -#endif - #if __USE_MINGW_ANSI_STDIO /* * User has expressed a preference for C99 conformance... @@ -623,15 +614,6 @@ /* __attribute__((__format__ (gnu_wprintf, 2, 0))) */ __MINGW_ATTRIB_NONNULL(2) int __cdecl __mingw_vswprintf(wchar_t * __restrict__ , const wchar_t * __restrict__ ,va_list); -#undef __mingw_ovr -#if defined (__GNUC__) -#define __mingw_ovr static __attribute__ ((__unused__)) __inline__ __cdecl -#elif defined(__cplusplus) -#define __mingw_ovr inline __cdecl -#else -#define __mingw_ovr static __cdecl -#endif - #if __USE_MINGW_ANSI_STDIO /* * User has expressed a preference for C99 conformance...
diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h index b6ada84..e7c79a6 100644 --- a/mingw-w64-headers/crt/stdlib.h +++ b/mingw-w64-headers/crt/stdlib.h
@@ -9,6 +9,10 @@ #include <crtdefs.h> #include <limits.h> +#if defined (__USE_MINGW_ANSI_STDIO) && !defined (__USE_MINGW_STRTOX) +#define __USE_MINGW_STRTOX 1 +#endif + #pragma pack(push,_CRT_PACKING) #ifdef __cplusplus @@ -380,25 +384,37 @@ #ifdef _CRT_RAND_S _CRTIMP errno_t __cdecl rand_s(unsigned int *randomValue); #endif +#if defined(__USE_MINGW_STRTOX) +__mingw_ovr +double __cdecl __MINGW_NOTHROW strtod(const char * __restrict__ _Str,char ** __restrict__ _EndPtr) +{ + double __cdecl __mingw_strtod (const char * __restrict__, char ** __restrict__); + return __mingw_strtod( _Str, _EndPtr); +} + +__mingw_ovr +float __cdecl __MINGW_NOTHROW strtof(const char * __restrict__ _Str,char ** __restrict__ _EndPtr) +{ + float __cdecl __mingw_strtof (const char * __restrict__, char ** __restrict__); + return __mingw_strtof( _Str, _EndPtr); +} + +/* strtold is already an alias to __mingw_strtold */ +#else double __cdecl __MINGW_NOTHROW strtod(const char * __restrict__ _Str,char ** __restrict__ _EndPtr); float __cdecl __MINGW_NOTHROW strtof(const char * __restrict__ nptr, char ** __restrict__ endptr); +#endif /* defined(__USE_MINGW_STRTOX) */ long double __cdecl __MINGW_NOTHROW strtold(const char * __restrict__ , char ** __restrict__ ); #if !defined __NO_ISOCEXT /* libmingwex.a provides a c99-compliant strtod() exported as __strtod() */ extern double __cdecl __MINGW_NOTHROW __strtod (const char * __restrict__ , char ** __restrict__); -#ifdef __cplusplus -__inline__ double __cdecl __MINGW_NOTHROW -strtod (const char * __restrict__ __nptr, char ** __restrict__ __endptr) -{ - return __strtod(__nptr, __endptr); -} -#endif #define strtod __strtod #endif /* __NO_ISOCEXT */ #if !defined __NO_ISOCEXT /* in libmingwex.a */ float __cdecl __mingw_strtof (const char * __restrict__, char ** __restrict__); + double __cdecl __mingw_strtod (const char * __restrict__, char ** __restrict__); long double __cdecl __mingw_strtold(const char * __restrict__, char ** __restrict__); #endif /* __NO_ISOCEXT */ _CRTIMP double __cdecl _strtod_l(const char * __restrict__ _Str,char ** __restrict__ _EndPtr,_locale_t _Locale); @@ -447,15 +463,26 @@ _CRTIMP wchar_t *__cdecl _itow(int _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; _CRTIMP wchar_t *__cdecl _ltow(long _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; _CRTIMP wchar_t *__cdecl _ultow(unsigned long _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; - double __cdecl wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); - float __cdecl wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); double __cdecl __mingw_wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); float __cdecl __mingw_wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); long double __cdecl __mingw_wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__); +#if defined(__USE_MINGW_STRTOX) + __mingw_ovr + double __cdecl wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr){ + return __mingw_wcstod(_Str,_EndPtr); + } + __mingw_ovr + float __cdecl wcstof(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr){ + return __mingw_wcstof(_Str,_EndPtr); + } + /* wcstold is already a mingw implementation */ +#else + double __cdecl wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); + float __cdecl wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); +#endif /* defined(__USE_MINGW_STRTOX) */ #if !defined __NO_ISOCEXT /* in libmingwex.a */ - float __cdecl wcstof( const wchar_t * __restrict__, wchar_t ** __restrict__); long double __cdecl wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__); #endif /* __NO_ISOCEXT */ _CRTIMP double __cdecl _wcstod_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,_locale_t _Locale);
diff --git a/mingw-w64-headers/crt/wchar.h b/mingw-w64-headers/crt/wchar.h index 6c36722..0ba6131 100644 --- a/mingw-w64-headers/crt/wchar.h +++ b/mingw-w64-headers/crt/wchar.h
@@ -9,6 +9,10 @@ #include <crtdefs.h> #include <_mingw_print_push.h> +#if defined (__USE_MINGW_ANSI_STDIO) && !defined (__USE_MINGW_STRTOX) +#define __USE_MINGW_STRTOX 1 +#endif + #pragma pack(push,_CRT_PACKING) #ifdef __cplusplus @@ -765,16 +769,27 @@ _CRTIMP wchar_t *__cdecl _itow(int _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; _CRTIMP wchar_t *__cdecl _ltow(long _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; _CRTIMP wchar_t *__cdecl _ultow(unsigned long _Value,wchar_t *_Dest,int _Radix) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; - double __cdecl wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); _CRTIMP double __cdecl _wcstod_l(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,_locale_t _Locale); - float __cdecl wcstof( const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); double __cdecl __mingw_wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); float __cdecl __mingw_wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); long double __cdecl __mingw_wcstold(const wchar_t * __restrict__, wchar_t ** __restrict__); +#if defined(__USE_MINGW_ANSI_STDIO) + __mingw_ovr + double __cdecl wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr){ + return __mingw_wcstod(_Str,_EndPtr); + } + __mingw_ovr + float __cdecl wcstof(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr){ + return __mingw_wcstof(_Str,_EndPtr); + } + /* wcstold is already a mingw implementation */ +#else + double __cdecl wcstod(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr); + float __cdecl wcstof(const wchar_t * __restrict__ nptr, wchar_t ** __restrict__ endptr); +#endif /* defined(__USE_MINGW_STRTOX) */ #if !defined __NO_ISOCEXT /* in libmingwex.a */ - float __cdecl wcstof (const wchar_t * __restrict__, wchar_t ** __restrict__); long double __cdecl wcstold (const wchar_t * __restrict__, wchar_t ** __restrict__); #endif /* __NO_ISOCEXT */ long __cdecl wcstol(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr,int _Radix);