Guard against FreeBSD 6.1 bug.
authorBruno Haible <bruno@clisp.org>
Wed, 11 Apr 2007 00:24:01 +0000 (00:24 +0000)
committerBruno Haible <bruno@clisp.org>
Wed, 11 Apr 2007 00:24:01 +0000 (00:24 +0000)
ChangeLog
m4/printf.m4
tests/test-fprintf-posix.h
tests/test-fprintf-posix.out
tests/test-snprintf-posix.h
tests/test-sprintf-posix.h
tests/test-vasnprintf-posix.c
tests/test-vasprintf-posix.c

index 8c792ae..5d39800 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2007-04-10  Bruno Haible  <bruno@clisp.org>
 
+       * m4/printf.m4 (gl_PRINTF_DIRECTIVE_A): Add a test for correct result
+       for NaN and Infinity. Needed on FreeBSD 6.1.
+       * tests/test-vasnprintf-posix.c (test_function): Undo last change
+       regarding results for "%010a" of Infinity and NaN.
+       * tests/test-vasprintf-posix.c (test_function): Likewise.
+       * tests/test-snprintf-posix.h (test_function): Likewise.
+       * tests/test-sprintf-posix.h (test_function): Likewise.
+       * tests/test-fprintf-posix.h (test_function): Likewise.
+       * tests/test-printf-posix.h (test_function): Likewise.
+       * tests/test-fprintf-posix.out: Likewise.
+
+2007-04-10  Bruno Haible  <bruno@clisp.org>
+
        * modules/locale-tests: New file.
        * tests/test-locale.c: New file.
 
index 3ce777c..d39b42f 100644 (file)
@@ -1,4 +1,4 @@
-# printf.m4 serial 4
+# printf.m4 serial 5
 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,
@@ -118,6 +118,11 @@ int main ()
           && strcmp (result, "0x6.0ap-2 33") != 0
           && strcmp (result, "0xc.14p-3 33") != 0))
     return 1;
+  /* This catches a FreeBSD 6.1 bug.  See
+     <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+  if (sprintf (buf, "%010a %d", 1.0 / 0.0, 33, 44, 55) < 0
+      || result[0] == '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
index 488f842..2d5eb93 100644 (file)
@@ -61,6 +61,12 @@ test_function (int (*my_fprintf) (FILE *, const char *, ...))
   /* NaN.  */
   my_fprintf (stdout, "%a %d\n", NaN (), 33, 44, 55);
 
+  /* FLAG_ZERO with infinite number.  */
+  my_fprintf (stdout, "%010a %d\n", 1.0 / 0.0, 33, 44, 55);
+
+  /* FLAG_ZERO with NaN.  */
+  my_fprintf (stdout, "%010a %d\n", NaN (), 33, 44, 55);
+
   /* Test the support of the POSIX/XSI format strings with positions.  */
 
   my_fprintf (stdout, "%2$d %1$d\n", 33, 55);
index ef1c249..6f2e3d6 100644 (file)
@@ -6,4 +6,6 @@
 inf 33
 -inf 33
 nan 33
+       inf 33
+       nan 33
 55 33
index 48ef453..012d5a3 100644 (file)
@@ -339,8 +339,9 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...))
     char result[100];
     int retval =
       my_snprintf (result, sizeof (result), "%010a %d", 1.0 / 0.0, 33, 44, 55);
-    ASSERT (strcmp (result, "       inf 33") == 0
-           || strcmp (result, "0000000inf 33") == 0);
+    /* "0000000inf 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       inf 33") == 0);
     ASSERT (retval == strlen (result));
   }
 
@@ -348,8 +349,9 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...))
     char result[100];
     int retval =
       my_snprintf (result, sizeof (result), "%010a %d", NaN (), 33, 44, 55);
-    ASSERT (strcmp (result, "       nan 33") == 0
-           || strcmp (result, "0000000nan 33") == 0);
+    /* "0000000nan 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       nan 33") == 0);
     ASSERT (retval == strlen (result));
   }
 
@@ -597,8 +599,9 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...))
     char result[100];
     int retval =
       my_snprintf (result, sizeof (result), "%010La %d", 1.0L / 0.0L, 33, 44, 55);
-    ASSERT (strcmp (result, "       inf 33") == 0
-           || strcmp (result, "0000000inf 33") == 0);
+    /* "0000000inf 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       inf 33") == 0);
     ASSERT (retval == strlen (result));
   }
 
@@ -606,8 +609,9 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...))
     char result[100];
     int retval =
       my_snprintf (result, sizeof (result), "%010La %d", 0.0L / 0.0L, 33, 44, 55);
-    ASSERT (strcmp (result, "       nan 33") == 0
-           || strcmp (result, "0000000nan 33") == 0);
+    /* "0000000nan 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       nan 33") == 0);
     ASSERT (retval == strlen (result));
   }
 
index e0645ba..323a654 100644 (file)
@@ -325,8 +325,9 @@ test_function (int (*my_sprintf) (char *, const char *, ...))
     char result[1000];
     int retval =
       my_sprintf (result, "%010a %d", 1.0 / 0.0, 33, 44, 55);
-    ASSERT (strcmp (result, "       inf 33") == 0
-           || strcmp (result, "0000000inf 33") == 0);
+    /* "0000000inf 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       inf 33") == 0);
     ASSERT (retval == strlen (result));
   }
 
@@ -334,8 +335,9 @@ test_function (int (*my_sprintf) (char *, const char *, ...))
     char result[1000];
     int retval =
       my_sprintf (result, "%010a %d", NaN (), 33, 44, 55);
-    ASSERT (strcmp (result, "       nan 33") == 0
-           || strcmp (result, "0000000nan 33") == 0);
+    /* "0000000nan 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       nan 33") == 0);
     ASSERT (retval == strlen (result));
   }
 
@@ -583,8 +585,9 @@ test_function (int (*my_sprintf) (char *, const char *, ...))
     char result[1000];
     int retval =
       my_sprintf (result, "%010La %d", 1.0L / 0.0L, 33, 44, 55);
-    ASSERT (strcmp (result, "       inf 33") == 0
-           || strcmp (result, "0000000inf 33") == 0);
+    /* "0000000inf 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       inf 33") == 0);
     ASSERT (retval == strlen (result));
   }
 
@@ -592,8 +595,9 @@ test_function (int (*my_sprintf) (char *, const char *, ...))
     char result[1000];
     int retval =
       my_sprintf (result, "%010La %d", 0.0L / 0.0L, 33, 44, 55);
-    ASSERT (strcmp (result, "       nan 33") == 0
-           || strcmp (result, "0000000nan 33") == 0);
+    /* "0000000nan 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       nan 33") == 0);
     ASSERT (retval == strlen (result));
   }
 
index fdfa3d5..0f158e1 100644 (file)
@@ -414,8 +414,9 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
     char *result =
       my_asnprintf (NULL, &length, "%010a %d", 1.0 / 0.0, 33, 44, 55);
     ASSERT (result != NULL);
-    ASSERT (strcmp (result, "       inf 33") == 0
-           || strcmp (result, "0000000inf 33") == 0);
+    /* "0000000inf 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       inf 33") == 0);
     ASSERT (length == strlen (result));
     free (result);
   }
@@ -425,8 +426,9 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
     char *result =
       my_asnprintf (NULL, &length, "%010a %d", NaN (), 33, 44, 55);
     ASSERT (result != NULL);
-    ASSERT (strcmp (result, "       nan 33") == 0
-           || strcmp (result, "0000000nan 33") == 0);
+    /* "0000000nan 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       nan 33") == 0);
     ASSERT (length == strlen (result));
     free (result);
   }
@@ -722,8 +724,9 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
     char *result =
       my_asnprintf (NULL, &length, "%010La %d", 1.0L / 0.0L, 33, 44, 55);
     ASSERT (result != NULL);
-    ASSERT (strcmp (result, "       inf 33") == 0
-           || strcmp (result, "0000000inf 33") == 0);
+    /* "0000000inf 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       inf 33") == 0);
     ASSERT (length == strlen (result));
     free (result);
   }
@@ -733,8 +736,9 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
     char *result =
       my_asnprintf (NULL, &length, "%010La %d", 0.0L / 0.0L, 33, 44, 55);
     ASSERT (result != NULL);
-    ASSERT (strcmp (result, "       nan 33") == 0
-           || strcmp (result, "0000000nan 33") == 0);
+    /* "0000000nan 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       nan 33") == 0);
     ASSERT (length == strlen (result));
     free (result);
   }
index 2f3c318..4333622 100644 (file)
@@ -395,8 +395,9 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     int retval =
       my_asprintf (&result, "%010a %d", 1.0 / 0.0, 33, 44, 55);
     ASSERT (result != NULL);
-    ASSERT (strcmp (result, "       inf 33") == 0
-           || strcmp (result, "0000000inf 33") == 0);
+    /* "0000000inf 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       inf 33") == 0);
     ASSERT (retval == strlen (result));
     free (result);
   }
@@ -406,8 +407,9 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     int retval =
       my_asprintf (&result, "%010a %d", NaN (), 33, 44, 55);
     ASSERT (result != NULL);
-    ASSERT (strcmp (result, "       nan 33") == 0
-           || strcmp (result, "0000000nan 33") == 0);
+    /* "0000000nan 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       nan 33") == 0);
     ASSERT (retval == strlen (result));
     free (result);
   }
@@ -703,8 +705,9 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     int retval =
       my_asprintf (&result, "%010La %d", 1.0L / 0.0L, 33, 44, 55);
     ASSERT (result != NULL);
-    ASSERT (strcmp (result, "       inf 33") == 0
-           || strcmp (result, "0000000inf 33") == 0);
+    /* "0000000inf 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       inf 33") == 0);
     ASSERT (retval == strlen (result));
     free (result);
   }
@@ -714,8 +717,9 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     int retval =
       my_asprintf (&result, "%010La %d", 0.0L / 0.0L, 33, 44, 55);
     ASSERT (result != NULL);
-    ASSERT (strcmp (result, "       nan 33") == 0
-           || strcmp (result, "0000000nan 33") == 0);
+    /* "0000000nan 33" is not a valid result; see
+       <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */
+    ASSERT (strcmp (result, "       nan 33") == 0);
     ASSERT (retval == strlen (result));
     free (result);
   }