diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-12-19 04:25:14 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-12-19 04:25:14 +0000 |
commit | 8a7455e70db36c00281a31f60e899d6b424e732b (patch) | |
tree | 1079ef4e925d41bf3770d511f91e0848a7188ce0 /stdio-common | |
parent | 2e5e031d50fb2fbf58d08f398b58d3ea0ddc4be0 (diff) | |
download | glibc-8a7455e70db36c00281a31f60e899d6b424e732b.tar glibc-8a7455e70db36c00281a31f60e899d6b424e732b.tar.gz glibc-8a7455e70db36c00281a31f60e899d6b424e732b.tar.bz2 glibc-8a7455e70db36c00281a31f60e899d6b424e732b.zip |
Update.
2003-12-18 Ulrich Drepper <drepper@redhat.com>
* 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 <hamed@bamdad.org>.
Diffstat (limited to 'stdio-common')
-rw-r--r-- | stdio-common/printf_fp.c | 45 | ||||
-rw-r--r-- | stdio-common/vfprintf.c | 1 |
2 files changed, 27 insertions, 19 deletions
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 <drepper@gnu.ai.mit.edu>, 1995. @@ -21,11 +21,7 @@ /* The gmp headers need some configuration frobs. */ #define HAVE_ALLOCA 1 -#ifdef USE_IN_LIBIO -# include <libioP.h> -#else -# include <stdio.h> -#endif +#include <libioP.h> #include <alloca.h> #include <ctype.h> #include <float.h> @@ -43,6 +39,14 @@ #include <stdlib.h> #include <wchar.h> +#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) \ |