From d06984e2be1fc5e2cf871e9666f21d7ab3760e3f Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 12 Jul 2004 06:30:36 +0000 Subject: Include first. (C_STRTOD, DOUBLE, STRTOD): New macros. (c_strtod): Use them. --- lib/c-strtod.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) (limited to 'lib/c-strtod.c') diff --git a/lib/c-strtod.c b/lib/c-strtod.c index ed5be49ab..25d895107 100644 --- a/lib/c-strtod.c +++ b/lib/c-strtod.c @@ -1,6 +1,6 @@ /* Convert string to double, using the C locale. - Copyright (C) 2003 Free Software Foundation, Inc. + Copyright (C) 2003, 2004 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,10 @@ /* Written by Paul Eggert. */ +#ifdef HAVE_CONFIG_H +# include +#endif + #include "c-strtod.h" #include @@ -25,10 +29,25 @@ #include "xalloc.h" -double -c_strtod (char const *nptr, char **endptr) +#if LONG +# define C_STRTOD c_strtold +# define DOUBLE long double +#else +# define C_STRTOD c_strtod +# define DOUBLE double +#endif + +/* c_strtold falls back on strtod if strtold isn't declared. */ +#if LONG && HAVE_DECL_STRTOLD +# define STRTOD strtold +#else +# define STRTOD strtod +#endif + +DOUBLE +C_STRTOD (char const *nptr, char **endptr) { - double r; + DOUBLE r; char *saved_locale = setlocale (LC_NUMERIC, NULL); if (saved_locale) @@ -37,7 +56,7 @@ c_strtod (char const *nptr, char **endptr) setlocale (LC_NUMERIC, "C"); } - r = strtod (nptr, endptr); + r = STRTOD (nptr, endptr); if (saved_locale) { -- cgit v1.2.3-54-g00ecf