This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] printf: Enable grouping decimal values


On 04/02/10 03:21 PM, Corinna Vinschen wrote:
On Feb 4 21:12, Corinna Vinschen wrote:
On Feb 4 13:30, Jeff Johnston wrote:
On 01/02/10 03:47 PM, Corinna Vinschen wrote:
Hi,

the below patch is derived from NetBSD code.  It enables printf/wprintf
grouping using the thousands' grouping character from the locale
information when the ' (single quote) flag character has been specified
in decimal conversions (i, d, u, f, F, g, G), as specified by POSIX-1.2008.

This is a tough patch to review because of all the format changes and ifdefs in the patch itself.

I did notice one spot where the size is being calculated and the
grouping ptr is moved to do this calculation.  I can't see anywhere
where you are resetting grouping before the output is written.  This
seems like a mistake, but perhaps I am missing something.

That's correct. In case of float values there are two runs, one to compute the size, the number of lead digits, the number of required separators and and the number of repetitions for the leftmost grouping. While doing that, the grouping pointer is moved to the end of the grouping string: [...] Later, when the float value is actually printed, the grouping pointer moves backward again, depending on the number of repetitions and actual number of explicit groupings: [...]

One more point: Consider that the grouping string defines the grouping from right to left, while the printing goes from left to right. That should explain why moving the grouping pointer backwards while printing makes sense.



Ah, that makes sense regarding why you were counting repetitions. Ok then to commit.


-- Jeff J.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]