+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.
-# 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,
&& 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
/* 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);
inf 33
-inf 33
nan 33
+ inf 33
+ nan 33
55 33
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));
}
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));
}
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));
}
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));
}
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));
}
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));
}
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));
}
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));
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}