/* Copyright (C) 1999-2016 Free Software Foundation, Inc. This file is part of the GNU C Library. 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 <math.h> #include <stdlib.h> #include <xlocale.h> #if defined _LIBC || defined HAVE_WCHAR_H # include <wchar.h> #endif #ifdef USE_WIDE_CHAR # define STRING_TYPE wchar_t # define STRTOLD wcstold_l # define __STRTOLD __wcstold_l # define __STRTOD __wcstod_l #else # define STRING_TYPE char # define STRTOLD strtold_l # define __STRTOLD __strtold_l # define __STRTOD __strtod_l #endif #define INTERNAL(x) INTERNAL1(x) #define INTERNAL1(x) __##x##_internal extern double INTERNAL (__STRTOD) (const STRING_TYPE *, STRING_TYPE **, int, __locale_t); /* There is no `long double' type, use the `double' implementations. */ long double INTERNAL (__STRTOLD) (const STRING_TYPE *nptr, STRING_TYPE **endptr, int group, __locale_t loc) { return INTERNAL (__STRTOD) (nptr, endptr, group, loc); } #ifndef USE_WIDE_CHAR libc_hidden_def (INTERNAL (__STRTOLD)) #endif long double weak_function __STRTOLD (const STRING_TYPE *nptr, STRING_TYPE **endptr, __locale_t loc) { return INTERNAL (__STRTOD) (nptr, endptr, 0, loc); } #if defined _LIBC libc_hidden_def (__STRTOLD) libc_hidden_ver (__STRTOLD, STRTOLD) #endif weak_alias (__STRTOLD, STRTOLD)