From 8a7455e70db36c00281a31f60e899d6b424e732b Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 19 Dec 2003 04:25:14 +0000 Subject: Update. 2003-12-18 Ulrich Drepper * stdio-common/printf_fp.c: Add support to use alternative decimal digits. * stdio-common/vfprintf.c (vfprintf): Pass use_outdigits flags to __printf_fp. Patch by Hamed Malek . --- stdio-common/printf_fp.c | 45 ++++++++++++++++++++++++++------------------- stdio-common/vfprintf.c | 1 + 2 files changed, 27 insertions(+), 19 deletions(-) (limited to 'stdio-common') diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c index 0f0c68eb88..62867e75f2 100644 --- a/stdio-common/printf_fp.c +++ b/stdio-common/printf_fp.c @@ -1,5 +1,5 @@ /* Floating point output for `printf'. - Copyright (C) 1995-1999, 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1995-1999,2000,2001,2002,2003 Free Software Foundation, Inc. This file is part of the GNU C Library. Written by Ulrich Drepper , 1995. @@ -21,11 +21,7 @@ /* The gmp headers need some configuration frobs. */ #define HAVE_ALLOCA 1 -#ifdef USE_IN_LIBIO -# include -#else -# include -#endif +#include #include #include #include @@ -43,6 +39,14 @@ #include #include +#ifdef COMPILE_WPRINTF +# define CHAR_T wchar_t +#else +# define CHAR_T char +#endif + +#include "_i18n_number.h" + #ifndef NDEBUG # define NDEBUG /* Undefine this for debugging assertions. */ #endif @@ -50,21 +54,15 @@ /* This defines make it possible to use the same code for GNU C library and the GNU I/O library. */ -#ifdef USE_IN_LIBIO -# define PUT(f, s, n) _IO_sputn (f, s, n) -# define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : INTUSE(_IO_padn) (f, c, n)) +#define PUT(f, s, n) _IO_sputn (f, s, n) +#define PAD(f, c, n) (wide ? _IO_wpadn (f, c, n) : INTUSE(_IO_padn) (f, c, n)) /* We use this file GNU C library and GNU I/O library. So make names equal. */ -# undef putc -# define putc(c, f) (wide \ - ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) -# define size_t _IO_size_t -# define FILE _IO_FILE -#else /* ! USE_IN_LIBIO */ -# define PUT(f, s, n) fwrite (s, 1, n, f) -# define PAD(f, c, n) __printf_pad (f, c, n) -ssize_t __printf_pad __P ((FILE *, char pad, int n)); /* In vfprintf.c. */ -#endif /* USE_IN_LIBIO */ +#undef putc +#define putc(c, f) (wide \ + ? (int)_IO_putwc_unlocked (c, f) : _IO_putc_unlocked (c, f)) +#define size_t _IO_size_t +#define FILE _IO_FILE /* Macros for doing the actual output. */ @@ -1129,6 +1127,15 @@ __printf_fp (FILE *fp, } tmpptr = buffer; + if (__builtin_expect (info->i18n, 0)) + { +#ifdef COMPILE_WPRINTF + wstartp = _i18n_number_rewrite (wstartp, wcp); +#else + tmpptr = _i18n_number_rewrite (tmpptr, cp); +#endif + } + PRINT (tmpptr, wstartp, wide ? wcp - wstartp : cp - tmpptr); /* Free the memory if necessary. */ diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c index 94fd37e5e4..b84107ab6f 100644 --- a/stdio-common/vfprintf.c +++ b/stdio-common/vfprintf.c @@ -817,6 +817,7 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap) .group = group, \ .pad = pad, \ .extra = 0, \ + .i18n = use_outdigits, \ .wide = sizeof (CHAR_T) != 1 }; \ \ if (is_long_double) \ -- cgit v1.2.3