about summary refs log tree commit diff
path: root/REORG.TODO/stdlib/strtod.c
diff options
context:
space:
mode:
Diffstat (limited to 'REORG.TODO/stdlib/strtod.c')
-rw-r--r--REORG.TODO/stdlib/strtod.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/REORG.TODO/stdlib/strtod.c b/REORG.TODO/stdlib/strtod.c
new file mode 100644
index 0000000000..2ac1b2e57a
--- /dev/null
+++ b/REORG.TODO/stdlib/strtod.c
@@ -0,0 +1,80 @@
+/* Read decimal floating point numbers.
+   This file is part of the GNU C Library.
+   Copyright (C) 1995-2017 Free Software Foundation, Inc.
+   Contributed by Ulrich Drepper <drepper@gnu.org>, 1995.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdlib.h>
+#include <wchar.h>
+#include <locale/localeinfo.h>
+
+
+#ifndef FLOAT
+# include <math_ldbl_opt.h>
+# define FLOAT double
+# ifdef USE_WIDE_CHAR
+#  define STRTOF wcstod
+#  define STRTOF_L __wcstod_l
+# else
+#  define STRTOF strtod
+#  define STRTOF_L __strtod_l
+# endif
+#endif
+
+#ifdef USE_WIDE_CHAR
+# include <wctype.h>
+# define STRING_TYPE wchar_t
+#else
+# define STRING_TYPE char
+#endif
+
+#define INTERNAL(x) INTERNAL1(x)
+#define INTERNAL1(x) __##x##_internal
+
+
+FLOAT
+INTERNAL (STRTOF) (const STRING_TYPE *nptr, STRING_TYPE **endptr, int group)
+{
+  return INTERNAL(STRTOF_L) (nptr, endptr, group, _NL_CURRENT_LOCALE);
+}
+#if defined _LIBC
+libc_hidden_def (INTERNAL (STRTOF))
+#endif
+
+
+FLOAT
+#ifdef weak_function
+weak_function
+#endif
+STRTOF (const STRING_TYPE *nptr, STRING_TYPE **endptr)
+{
+  return INTERNAL(STRTOF_L) (nptr, endptr, 0, _NL_CURRENT_LOCALE);
+}
+#if defined _LIBC
+libc_hidden_def (STRTOF)
+#endif
+
+#ifdef LONG_DOUBLE_COMPAT
+# if LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+#  ifdef USE_WIDE_CHAR
+compat_symbol (libc, wcstod, wcstold, GLIBC_2_0);
+compat_symbol (libc, __wcstod_internal, __wcstold_internal, GLIBC_2_0);
+#  else
+compat_symbol (libc, strtod, strtold, GLIBC_2_0);
+compat_symbol (libc, __strtod_internal, __strtold_internal, GLIBC_2_0);
+#  endif
+# endif
+#endif