changeset 13878:f120aacf676a

ftoastr: port to hosts lacking strtof and strtold Problem reported by Bruno Haible in <http://lists.gnu.org/archive/html/bug-gnulib/2010-11/msg00242.html>. * 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.
author Paul Eggert <eggert@cs.ucla.edu>
date Thu, 18 Nov 2010 17:31:52 -0800
parents 5fb52cb372b0
children 608c8fdccab5
files ChangeLog lib/ftoastr.c modules/ftoastr
diffstat 3 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2010-11-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+	ftoastr: port to hosts lacking strtof and strtold
+	Problem reported by Bruno Haible in
+	<http://lists.gnu.org/archive/html/bug-gnulib/2010-11/msg00242.html>.
+	* 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  <bruno@clisp.org>
 
 	c-strtold: Avoid link error on AIX 7.
--- 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)
 {
--- a/modules/ftoastr
+++ b/modules/ftoastr
@@ -6,11 +6,13 @@
 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