From 32a4812677fe70153e37bc19925aab9bac6a283d Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 18 Nov 2010 17:31:52 -0800 Subject: [PATCH] ftoastr: port to hosts lacking strtof and strtold Problem reported by Bruno Haible in . * lib/ftoastr.c (STRTOF): Define to strtod if in a pre-C99 environment and strtold (and presumably strtof) are not available. * modules/ftoastr (Files): Add m4/c-strtod.m4. (configure.ac): Require gl_C99_STRTOLD. --- ChangeLog | 10 ++++++++++ lib/ftoastr.c | 8 ++++++++ modules/ftoastr | 2 ++ 3 files changed, 20 insertions(+) diff --git a/ChangeLog b/ChangeLog index 7f0d11746..a1043bd70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2010-11-18 Paul Eggert + + ftoastr: port to hosts lacking strtof and strtold + Problem reported by Bruno Haible in + . + * lib/ftoastr.c (STRTOF): Define to strtod if in a pre-C99 + environment and strtold (and presumably strtof) are not available. + * modules/ftoastr (Files): Add m4/c-strtod.m4. + (configure.ac): Require gl_C99_STRTOLD. + 2010-11-18 Bruno Haible c-strtold: Avoid link error on AIX 7. diff --git a/lib/ftoastr.c b/lib/ftoastr.c index 25e0705e4..ddc525168 100644 --- a/lib/ftoastr.c +++ b/lib/ftoastr.c @@ -48,6 +48,14 @@ # define STRTOF strtof #endif +/* On pre-C99 hosts, approximate strtof and strtold with strtod. This + may generate one or two extra digits, but that's better than not + working at all. Assume that strtof works if strtold does. */ +#if LENGTH != 2 && ! HAVE_C99_STRTOLD +# undef STRTOF +# define STRTOF strtod +#endif + int FTOASTR (char *buf, size_t bufsize, int flags, int width, FLOAT x) { diff --git a/modules/ftoastr b/modules/ftoastr index fbc0cba73..64d0a7790 100644 --- a/modules/ftoastr +++ b/modules/ftoastr @@ -6,11 +6,13 @@ lib/ftoastr.h lib/ftoastr.c lib/dtoastr.c lib/ldtoastr.c +m4/c-strtod.m4 Depends-on: intprops configure.ac: +AC_REQUIRE([gl_C99_STRTOLD]) Makefile.am: lib_SOURCES += ftoastr.h ftoastr.c dtoastr.c ldtoastr.c -- 2.11.0