diff --git a/headers/posix/stdlib.h b/headers/posix/stdlib.h index cdb1b3838d..97be26ed38 100644 --- a/headers/posix/stdlib.h +++ b/headers/posix/stdlib.h @@ -88,6 +88,7 @@ extern unsigned int atoui(const char *string); extern unsigned long atoul(const char *string); extern double strtod(const char *string, char **end); +extern long double strtold(const char *string, char **end); extern float strtof(const char *string, char **end); extern long strtol(const char *string, char **end, int base); extern unsigned long strtoul(const char *string, char **end, int base); diff --git a/src/system/libroot/posix/glibc/stdlib/Jamfile b/src/system/libroot/posix/glibc/stdlib/Jamfile index cc375848c2..94e22c7a23 100644 --- a/src/system/libroot/posix/glibc/stdlib/Jamfile +++ b/src/system/libroot/posix/glibc/stdlib/Jamfile @@ -36,6 +36,7 @@ MergeObject posix_gnu_stdlib.o : srand48.c srand48_r.c strtod.c + strtold.c strtof.c wcstombs.c wctomb.c diff --git a/src/system/libroot/posix/glibc/stdlib/strtod.c b/src/system/libroot/posix/glibc/stdlib/strtod.c index b4271baccc..85642b89cf 100644 --- a/src/system/libroot/posix/glibc/stdlib/strtod.c +++ b/src/system/libroot/posix/glibc/stdlib/strtod.c @@ -1574,18 +1574,3 @@ STRTOF (nptr, endptr LOCALE_PARAM) { return INTERNAL (STRTOF) (nptr, endptr, 0 LOCALE_PARAM); } - - -// XXX this is not correct - -long double __strtold_internal(const char *number, char **_end, int group); - -long double -#ifdef weak_function -weak_function -#endif -__strtold_internal(const char *number, char **_end, int group) -{ - return __strtod_internal(number, _end, group); -} - diff --git a/src/system/libroot/posix/glibc/stdlib/strtold.c b/src/system/libroot/posix/glibc/stdlib/strtold.c new file mode 100644 index 0000000000..f6f6eb9103 --- /dev/null +++ b/src/system/libroot/posix/glibc/stdlib/strtold.c @@ -0,0 +1,32 @@ +/* Copyright (C) 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include +#include + +/* There is no `long double' type, use the `double' implementations. */ +long double +__strtold_internal (const char *nptr, char **endptr, int group) +{ + return __strtod_internal (nptr, endptr, group); +} + +long double +strtold (const char *nptr, char **endptr) +{ + return __strtod_internal (nptr, endptr, 0); +}