From 6c46718f9f0dc0756860988c36eacdefe1cd27a6 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 23 Aug 2000 06:35:22 +0000 Subject: Update. * stdio-common/vfprintf.c: Handle %F format. * stdio-common/printf-parse.h (parse_one_spec): Likewise. Reported by Joseph S. Myers . * stdio-common/tstdiomisc.c: Add test for %F printf format. * po/zh.po: New file. --- stdio-common/printf-parse.h | 1 + stdio-common/tstdiomisc.c | 35 +++++++++++++++++++++++++++++++++++ stdio-common/vfprintf.c | 14 +++++++------- 3 files changed, 43 insertions(+), 7 deletions(-) (limited to 'stdio-common') diff --git a/stdio-common/printf-parse.h b/stdio-common/printf-parse.h index 1f2878a5fc..4a228a1cb8 100644 --- a/stdio-common/printf-parse.h +++ b/stdio-common/printf-parse.h @@ -390,6 +390,7 @@ parse_one_spec (const UCHAR_T *format, size_t posn, struct printf_spec *spec, case L'e': case L'E': case L'f': + case L'F': case L'g': case L'G': case L'a': diff --git a/stdio-common/tstdiomisc.c b/stdio-common/tstdiomisc.c index 1affac5b51..55d77b0f29 100644 --- a/stdio-common/tstdiomisc.c +++ b/stdio-common/tstdiomisc.c @@ -1,4 +1,8 @@ +#include +#include #include +#include +#include int t1 (void) @@ -42,6 +46,36 @@ t2 (void) return result; } +int +F (void) +{ + char buf[20]; + wchar_t wbuf[10]; + int result; + + snprintf (buf, sizeof buf, "%f %F", DBL_MAX * DBL_MAX - DBL_MAX * DBL_MAX, + DBL_MAX * DBL_MAX - DBL_MAX * DBL_MAX); + result = strcmp (buf, "nan NAN") != 0; + printf ("expected \"nan NAN\", got \"%s\"\n", buf); + + snprintf (buf, sizeof buf, "%f %F", DBL_MAX * DBL_MAX, DBL_MAX * DBL_MAX); + result |= strcmp (buf, "inf INF") != 0; + printf ("expected \"inf INF\", got \"%s\"\n", buf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%f %F", + DBL_MAX * DBL_MAX - DBL_MAX * DBL_MAX, + DBL_MAX * DBL_MAX - DBL_MAX * DBL_MAX); + result |= wcscmp (wbuf, L"nan NAN") != 0; + printf ("expected L\"nan NAN\", got L\"%S\"\n", wbuf); + + swprintf (wbuf, sizeof wbuf / sizeof (wbuf[0]), L"%f %F", + DBL_MAX * DBL_MAX, DBL_MAX * DBL_MAX); + result |= wcscmp (wbuf, L"inf INF") != 0; + printf ("expected L\"inf INF\", got L\"%S\"\n", wbuf); + + return result; +} + int main (int argc, char *argv[]) { @@ -49,6 +83,7 @@ main (int argc, char *argv[]) result |= t1 (); result |= t2 (); + result |= F (); result |= fflush (stdout) == EOF; diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c index 3f13026e14..b90f26f7fa 100644 --- a/stdio-common/vfprintf.c +++ b/stdio-common/vfprintf.c @@ -284,7 +284,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) /* '8' */ 8, /* '9' */ 8, 0, 0, 0, 0, 0, 0, 0, /* 'A' */ 26, 0, /* 'C' */ 25, - 0, /* 'E' */ 19, 0, /* 'G' */ 19, + 0, /* 'E' */ 19, /* F */ 19, /* 'G' */ 19, 0, /* 'I' */ 29, 0, 0, /* 'L' */ 12, 0, 0, 0, 0, 0, 0, /* 'S' */ 21, @@ -354,7 +354,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) REF (form_unsigned), /* for 'u' */ \ REF (form_octal), /* for 'o' */ \ REF (form_hexa), /* for 'X', 'x' */ \ - REF (form_float), /* for 'E', 'e', 'f', 'G', 'g' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ REF (form_character), /* for 'c' */ \ REF (form_string), /* for 's', 'S' */ \ REF (form_pointer), /* for 'p' */ \ @@ -388,7 +388,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) REF (form_unsigned), /* for 'u' */ \ REF (form_octal), /* for 'o' */ \ REF (form_hexa), /* for 'X', 'x' */ \ - REF (form_float), /* for 'E', 'e', 'f', 'G', 'g' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ REF (form_character), /* for 'c' */ \ REF (form_string), /* for 's', 'S' */ \ REF (form_pointer), /* for 'p' */ \ @@ -422,7 +422,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) REF (form_unsigned), /* for 'u' */ \ REF (form_octal), /* for 'o' */ \ REF (form_hexa), /* for 'X', 'x' */ \ - REF (form_float), /* for 'E', 'e', 'f', 'G', 'g' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ REF (form_character), /* for 'c' */ \ REF (form_string), /* for 's', 'S' */ \ REF (form_pointer), /* for 'p' */ \ @@ -456,7 +456,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) REF (form_unsigned), /* for 'u' */ \ REF (form_octal), /* for 'o' */ \ REF (form_hexa), /* for 'X', 'x' */ \ - REF (form_unknown), /* for 'E', 'e', 'f', 'G', 'g' */ \ + REF (form_unknown), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ REF (form_unknown), /* for 'c' */ \ REF (form_unknown), /* for 's', 'S' */ \ REF (form_unknown), /* for 'p' */ \ @@ -490,7 +490,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) REF (form_unsigned), /* for 'u' */ \ REF (form_octal), /* for 'o' */ \ REF (form_hexa), /* for 'X', 'x' */ \ - REF (form_float), /* for 'E', 'e', 'f', 'G', 'g' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ REF (form_character), /* for 'c' */ \ REF (form_string), /* for 's', 'S' */ \ REF (form_pointer), /* for 'p' */ \ @@ -526,7 +526,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) REF (form_unsigned), /* for 'u' */ \ REF (form_octal), /* for 'o' */ \ REF (form_hexa), /* for 'X', 'x' */ \ - REF (form_float), /* for 'E', 'e', 'f', 'G', 'g' */ \ + REF (form_float), /* for 'E', 'e', 'F', 'f', 'G', 'g' */ \ REF (form_character), /* for 'c' */ \ REF (form_string), /* for 's', 'S' */ \ REF (form_pointer), /* for 'p' */ \ -- cgit v1.2.3