summaryrefslogtreecommitdiff
path: root/stdlib/strtof_l.c
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/strtof_l.c')
-rw-r--r--stdlib/strtof_l.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/stdlib/strtof_l.c b/stdlib/strtof_l.c
index 1187ffc73b..bbc7611e1e 100644
--- a/stdlib/strtof_l.c
+++ b/stdlib/strtof_l.c
@@ -1,5 +1,5 @@
/* Convert string representing a number to float value, using given locale.
- Copyright (C) 1997,98,2002 Free Software Foundation, Inc.
+ Copyright (C) 1997,98,2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -18,14 +18,30 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
-#define USE_IN_EXTENDED_LOCALE_MODEL 1
-
#include <xlocale.h>
extern float ____strtof_l_internal (const char *, char **, int, __locale_t);
extern unsigned long long int ____strtoull_l_internal (const char *, char **,
int, int, __locale_t);
-#include <strtof.c>
-
-weak_alias (__strtof_l, strtof_l)
+#define FLOAT float
+#define FLT FLT
+#ifdef USE_WIDE_CHAR
+# define STRTOF wcstof_l
+# define __STRTOF __wcstof_l
+#else
+# define STRTOF strtof_l
+# define __STRTOF __strtof_l
+#endif
+#define MPN2FLOAT __mpn_construct_float
+#define FLOAT_HUGE_VAL HUGE_VALF
+#define SET_MANTISSA(flt, mant) \
+ do { union ieee754_float u; \
+ u.f = (flt); \
+ if ((mant & 0x7fffff) == 0) \
+ mant = 0x400000; \
+ u.ieee.mantissa = (mant) & 0x7fffff; \
+ (flt) = u.f; \
+ } while (0)
+
+#include "strtod_l.c"