diff options
Diffstat (limited to 'wcsmbs/wcstold.c')
-rw-r--r-- | wcsmbs/wcstold.c | 48 |
1 files changed, 7 insertions, 41 deletions
diff --git a/wcsmbs/wcstold.c b/wcsmbs/wcstold.c index 5c58aa69e6..d99b7278b9 100644 --- a/wcsmbs/wcstold.c +++ b/wcsmbs/wcstold.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1996, 1997, 1998, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996. @@ -17,46 +17,12 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include <math.h> -#include <wchar.h> +#include <stddef.h> +#include <xlocale.h> -#ifndef __NO_LONG_DOUBLE_MATH -/* The actual implementation for all floating point sizes is in strtod.c. - These macros tell it to produce the `long double' version, `wcstold'. */ +#define USE_WIDE_CHAR 1 -# define FLOAT long double -# define FLT LDBL -# ifdef USE_IN_EXTENDED_LOCALE_MODEL -# define STRTOF __wcstold_l -# else -# define STRTOF wcstold -# endif -# define MPN2FLOAT __mpn_construct_long_double -# define FLOAT_HUGE_VAL HUGE_VALL -# define USE_WIDE_CHAR 1 -# define SET_MANTISSA(flt, mant) \ - do { union ieee854_long_double u; \ - u.d = (flt); \ - if ((mant & 0x7fffffffffffffffULL) == 0) \ - mant = 0x4000000000000000ULL; \ - u.ieee.mantissa0 = (((mant) >> 32) & 0x7fffffff) | 0x80000000; \ - u.ieee.mantissa1 = (mant) & 0xffffffff; \ - (flt) = u.d; \ - } while (0) +extern long double ____wcstold_l_internal (const wchar_t *, wchar_t **, int, + __locale_t); -# include <stdlib/strtod.c> -#else -/* There is no `long double' type, use the `double' implementations. */ -long double -__wcstold_internal (const wchar_t *nptr, wchar_t **endptr, int group) -{ - return __wcstod_internal (nptr, endptr, group); -} -libc_hidden_def (__wcstold_internal) - -long double -wcstold (const wchar_t *nptr, wchar_t **endptr) -{ - return __wcstod_internal (nptr, endptr, 0); -} -#endif +#include <stdlib/strtold.c> |