*printf fix - ' flag
Jeff Johnston
jjohnstn@redhat.com
Wed Nov 15 20:40:00 GMT 2006
Patch checked in.
-- Jeff J.
Eric Blake wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> POSIX requires %'d to print a decimal separated by the thousands
> separator. Fortunately for newlib, the thousands separator in the C
> locale is the empty string. I also discovered that my previous patch to
> support %zu and friends was incomplete, since it didn't support %1$zu.
>
> 2006-11-14 Eric Blake <ebb9@byu.net>
>
> * libc/stdio/vfprintf.c (_vfprintf_r): Support ' flag.
> (chclass): ' is a flag. j, t, and z are modifiers.
>
> - --
> Life is short - so eat dessert first!
>
> Eric Blake ebb9@byu.net
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.5 (Cygwin)
> Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFFWcsg84KuGfSFAYARArs7AKCQPyAV61Bkm/vTGAccAicbhvWE+QCeIEjP
> q5WVwsWKx7SFuwAPVWJbz7Q=
> =1xe6
> -----END PGP SIGNATURE-----
>
>
> ------------------------------------------------------------------------
>
> Index: libc/stdio/vfprintf.c
> ===================================================================
> RCS file: /cvs/src/src/newlib/libc/stdio/vfprintf.c,v
> retrieving revision 1.46
> diff -u -p -r1.46 vfprintf.c
> --- libc/stdio/vfprintf.c 26 Sep 2006 21:22:19 -0000 1.46
> +++ libc/stdio/vfprintf.c 14 Nov 2006 13:54:18 -0000
> @@ -610,6 +610,12 @@ _DEFUN(_VFPRINTF_R, (data, fp, fmt0, ap)
>
> rflag: ch = *fmt++;
> reswitch: switch (ch) {
> + case '\'':
> + /* In the C locale, LC_NUMERIC requires
> + thousands_sep to be the empty string. And since
> + no other locales are supported (yet), this flag
> + is currently a no-op. */
> + goto rflag;
> case ' ':
> /*
> * ``If the space and + flags both appear, the space
> @@ -1495,7 +1501,7 @@ _CONST static CH_CLASS chclass[256] = {
> /* 08-0f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
> /* 10-17 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
> /* 18-1f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
> - /* 20-27 */ FLAG, OTHER, OTHER, FLAG, DOLLAR, OTHER, OTHER, OTHER,
> + /* 20-27 */ FLAG, OTHER, OTHER, FLAG, DOLLAR, OTHER, OTHER, FLAG,
> /* 28-2f */ OTHER, OTHER, STAR, FLAG, OTHER, FLAG, DOT, OTHER,
> /* 30-37 */ ZERO, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT,
> /* 38-3f */ DIGIT, DIGIT, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
> @@ -1504,9 +1510,9 @@ _CONST static CH_CLASS chclass[256] = {
> /* 50-57 */ OTHER, OTHER, OTHER, SPEC, OTHER, SPEC, OTHER, SPEC,
> /* 58-5f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
> /* 60-67 */ OTHER, OTHER, OTHER, SPEC, SPEC, SPEC, SPEC, SPEC,
> - /* 68-6f */ MODFR, SPEC, OTHER, OTHER, MODFR, OTHER, OTHER, SPEC,
> - /* 70-77 */ SPEC, MODFR, OTHER, SPEC, OTHER, SPEC, OTHER, OTHER,
> - /* 78-7f */ SPEC, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
> + /* 68-6f */ MODFR, SPEC, MODFR, OTHER, MODFR, OTHER, OTHER, SPEC,
> + /* 70-77 */ SPEC, MODFR, OTHER, SPEC, MODFR, SPEC, OTHER, OTHER,
> + /* 78-7f */ SPEC, OTHER, MODFR, OTHER, OTHER, OTHER, OTHER, OTHER,
> /* 80-87 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
> /* 88-8f */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
> /* 90-97 */ OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER, OTHER,
More information about the Newlib
mailing list