*/
/**********************************************************************/
-/* OPTIONS */
+/* OPTIONS */
/**********************************************************************/
/* Defined if we want to recognize "nan", "inf", and "infinity". (C99) */
#define _STRTOD_ZERO_CHECK 1
/**********************************************************************/
-/* Don't change anything that follows. */
+/* Don't change anything that follows. */
/**********************************************************************/
#ifdef _STRTOD_ERRNO
/**********************************************************************/
-#define _ISOC99_SOURCE 1
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <locale.h>
#ifdef __UCLIBC_HAS_WCHAR__
-
-#include <wchar.h>
-#include <wctype.h>
-#include <bits/uClibc_uwchar.h>
-libc_hidden_proto(iswspace)
+# include <wchar.h>
+# include <wctype.h>
+# include <bits/uClibc_uwchar.h>
#endif
-#ifdef __UCLIBC_HAS_XLOCALE__
-#include <xlocale.h>
-libc_hidden_proto(iswspace_l)
-#endif /* __UCLIBC_HAS_XLOCALE__ */
-
/* Handle _STRTOD_HEXADECIMAL_FLOATS via uClibc config now. */
#undef _STRTOD_HEXADECIMAL_FLOATS
#ifdef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
-#define _STRTOD_HEXADECIMAL_FLOATS 1
-#endif /* __UCLIBC_HAS_HEXADECIMAL_FLOATS__ */
+# define _STRTOD_HEXADECIMAL_FLOATS 1
+#endif
/**********************************************************************/
/**********************************************************************/
#if defined(L___strtofpmax) || defined(L___strtofpmax_l) || defined(L___wcstofpmax) || defined(L___wcstofpmax_l)
-#ifdef __UCLIBC_HAS_XLOCALE__
-libc_hidden_proto(__ctype_b_loc)
-#elif defined __UCLIBC_HAS_CTYPE_TABLES__
-libc_hidden_proto(__ctype_b)
-libc_hidden_proto(__ctype_tolower)
-#endif
-
#if defined(L___wcstofpmax) || defined(L___wcstofpmax_l)
#define __strtofpmax __wcstofpmax
#else /* defined(__UCLIBC_HAS_XLOCALE__) && !defined(__UCLIBC_DO_XLOCALE) */
-/* Experimentally off - libc_hidden_proto(memcmp) */
__fpmax_t attribute_hidden __XL_NPP(__strtofpmax)(const Wchar *str, Wchar **endptr, int exponent_power
__LOCALE_PARAM )
static const char nan_inf_str[] = "\05nan\0\012infinity\0\05inf\0";
int i = 0;
-#ifdef __UCLIBC_HAS_LOCALE__
- /* Avoid tolower problems for INFINITY in the tr_TR locale. (yuk)*/
-#undef _tolower
-#define _tolower(C) ((C)|0x20)
-#endif /* __UCLIBC_HAS_LOCALE__ */
-
do {
/* Unfortunately, we have no memcasecmp(). */
int j = 0;
- while (_tolower(pos[j]) == nan_inf_str[i+1+j]) {
+ /* | 0x20 is a cheap lowercasing (valid for ASCII letters and numbers only) */
+ while ((pos[j] | 0x20) == nan_inf_str[i+1+j]) {
++j;
if (!nan_inf_str[i+1+j]) {
number = i / 0.;
#endif
-libc_hidden_proto(__XL_NPP(strtof))
float __XL_NPP(strtof)(const Wchar *str, Wchar **endptr __LOCALE_PARAM )
{
#if FPMAX_TYPE == 1
return y;
#endif
}
-libc_hidden_def(__XL_NPP(strtof))
#endif
#endif
#define Wchar char
#endif
-libc_hidden_proto(__XL_NPP(strtod))
double __XL_NPP(strtod)(const Wchar *__restrict str,
Wchar **__restrict endptr __LOCALE_PARAM )
{
return y;
#endif
}
-libc_hidden_def(__XL_NPP(strtod))
+#ifdef L_strtod
+libc_hidden_def(strtod)
+#endif
#endif
#endif
#define Wchar char
#endif
-libc_hidden_proto(__XL_NPP(strtold))
long double __XL_NPP(strtold) (const Wchar *str, Wchar **endptr __LOCALE_PARAM )
{
#if FPMAX_TYPE == 3
return y;
#endif
}
-libc_hidden_def(__XL_NPP(strtold))
#endif
#endif