FreeBSD 6.1 appeared as one of the very few platforms that implement printf "%a". Well, it implements it, but not correctly: The testsuite revealed that for "%.2a" of 1.51 it returns "0x1.82p+0" instead of "0x1.83p+0".
2007-04-04 Bruno Haible <[EMAIL PROTECTED]> * m4/printf.m4 (gl_PRINTF_DIRECTIVE_A): Add a test for correct rounding. Don't assume that FreeBSD 6 and NetBSD 4 pass this test. --- m4/printf.m4 8 Mar 2007 13:45:22 -0000 1.12 +++ m4/printf.m4 5 Apr 2007 00:36:46 -0000 @@ -1,4 +1,4 @@ -# printf.m4 serial 2 +# printf.m4 serial 3 dnl Copyright (C) 2003, 2007 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -115,6 +115,13 @@ && strcmp (buf, "-0X6.488P-1 33") != 0 && strcmp (buf, "-0XC.91P-2 33") != 0)) return 1; + /* This catches a FreeBSD 6.1 bug: it doesn't round. */ + if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0 + || (strcmp (result, "0x1.83p+0 33") != 0 + && strcmp (result, "0x3.05p-1 33") != 0 + && strcmp (result, "0x6.0ap-2 33") != 0 + && strcmp (result, "0xc.14p-3 33") != 0)) + return 1; /* This catches a MacOS X 10.3.9 (Darwin 7.9) bug. */ if (sprintf (buf, "%.1a", 1.999) < 0 || (strcmp (buf, "0x1.0p+1") != 0 @@ -149,18 +156,9 @@ [gl_cv_func_printf_directive_a="guessing yes"], [gl_cv_func_printf_directive_a="guessing no"]) ;; -changequote(,)dnl - # Guess yes on FreeBSD >= 5. - freebsd[1-4]*) gl_cv_func_printf_directive_a="guessing no";; - freebsd* | kfreebsd*) gl_cv_func_printf_directive_a="guessing yes";; - # Guess yes on NetBSD >= 4. - netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*) - gl_cv_func_printf_directive_a="guessing no";; - netbsd*) gl_cv_func_printf_directive_a="guessing yes";; # If we don't know, assume the worst. *) gl_cv_func_printf_directive_a="guessing no";; esac -changequote([,])dnl ]) ]) ]) @@ -452,7 +450,7 @@ dnl 1 2 3 4 5 6 7 8 dnl glibc 2.5 . . . . . . . . dnl glibc 2.3.6 . # . . . . . . -dnl FreeBSD 5.4, 6.1 . . . . . . . . +dnl FreeBSD 5.4, 6.1 . ? . . . . . . dnl MacOS X 10.3.9 . # . . . . . . dnl OpenBSD 3.9, 4.0 . # . . . . . ? dnl Cygwin 2007 . # . . . . . ? @@ -466,7 +464,7 @@ dnl IRIX 6.5 # # . . . . # . dnl OSF/1 5.1 # # . . . . # . dnl OSF/1 4.0d # # . . # # # # -dnl NetBSD 4.0 . . . . . . . ? +dnl NetBSD 4.0 . ? . . . . . ? dnl NetBSD 3.0 . # . # . . . . dnl BeOS # # . # . . . . dnl mingw # # . # . # # #