bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

FreeBSD 6 and printf "%a"


From: Bruno Haible
Subject: FreeBSD 6 and printf "%a"
Date: Thu, 5 Apr 2007 02:41:36 +0200
User-agent: KMail/1.5.4

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  <address@hidden>

        * 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                                #  #  .  #  .  #  #  #





reply via email to

[Prev in Thread] Current Thread [Next in Thread]