/* 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.
/* 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>
#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
/* 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
\f
/* Macros for doing the actual output. */
}
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. */