[PATCH] printf: Enable grouping decimal values

Jeff Johnston jjohnstn@redhat.com
Thu Feb 4 22:26:00 GMT 2010


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.



More information about the Newlib mailing list